linux設備驅動之I/O通道解析


I/O控制方式主要有程序查詢方式、中斷方式、DMA方式、IO通道方式

1、程序查詢方式

  程序查詢方式也稱爲程序輪詢方式,該方式採用用戶程序直接控制主機與外部設備之間輸入/輸出操作。CPU必須不停地循環測試I/O設備的狀態端口,當發現設備處於準備好(Ready)狀態時,CPU就可以與I/O設備進行數據存取操作。這種方式下的CPU與I/O設備是串行工作的,輸入/輸出一般以字節或字爲單位進行。這個方式頻繁地測試I/O設備,I/O設備的速度相對來說又很慢,極大地降低了CPU的處理效率,並且僅僅依靠測試設備狀態位來進行數據傳送,不能及時發現傳輸中的硬件錯誤。但是這種方式的過程很簡單,易理解,並且不需要額外硬件。

2、中斷方式

  當I/O設備結束(完成、特殊或異常)時,就會向CPU發出中斷請求信號,CPU收到信號就可以採取相應措施。當某個進程要啓動某個設備時,CPU就向相應的設備控制器發出一條設備I/O啓動指令,然後CPU又返回做原來的工作。CPU與I/O設備可以並行工作,與程序查詢方式相比,大大提高了CPU的利用率。但是在中斷方式下,同程序查詢方式一樣,也是以字節或字爲單位進行。但是該方法大大降低了CPU的效率,因爲當中斷髮生的非常頻繁的時候,系統需要進行頻繁的中斷源識別、保護現場、中斷處理、恢復現場。這種方法對於以“塊”爲存取單位的塊設備,效率是低下的。

3、DMA(直接內存存取)方式

  DMA方式也稱爲直接主存存取方式,其思想是:允許主存儲器和I/O設備之間通過“DMA控制器(DMAC)”直接進行批量數據交換,除了在數據傳輸開始和結束時,整個過程無須CPU的干預。每傳輸一個“塊”數據只需要佔用一個主存週期。

  DMA方式下,一個完整的數據傳輸過程:

  1)DMA初始化

  當進程需要I/O設備進行數據輸入輸出時,CPU對DMA控制器初始化,並向I/O端口發出操作命令,提供準備傳輸的數據起始地址,需要傳送的數據長度等信息送入到DMA控制器中的主存地址寄存器和傳送字節計數器中。

  2)DMA傳輸

  DMA控制器獲得總線控制權後,進行輸出讀寫命令,直接控制主存與I/O設備之間的傳輸。在DMA控制器的控制下,數據傳輸過程中不需要CPU的參與。

  3)DMA結束

  當完成本次數據傳輸後,DMA控制器釋放總線控制權,並向I/O設備端口發出結束信號。

4、I/O通道控制方式

  通道(Channel)也稱爲外圍設備處理器、輸入輸出處理機,是相對於CPU而言的。是一個處理器。也能執行指令和由指令的程序,只不過通道執行的指令是與外部設備相關的指令。是一種實現主存與I/O設備進行直接數據交換的控制方式,與DMA控制方式相比,通道所需要的CPU控制更少,一個通道可以控制多個設備,並且能夠一次進行多個不連續的數據塊的存取交換,從而大大提高了計算機系統效率

  通道的類型:  1)字節多路通道  2)數組選擇通道 3)數組多路通道


下面我們主要介紹I/O通道控制方式:

 通道實際上是一種特殊的處理機(處理機:計算機系統中存儲程序和數據,並按照程序規定的步驟執行指令的部件)。它具有執行I/O指令的能力,並通過執行通道(I/O)程序來控制I/O操作。但I/O通道又與一般的處理機不同,主要表現在以下兩個方面:一是其指令類型單一,這是由於通道硬件比較簡單,其所能執行的命令,主要侷限於與I/O操作有關的指令;再就是通道沒有自己的內存,通道所執行的通道程序是放在主機的內存中的,換言之,是通道與CPU共享內存。

1、I/O通道設備的引入(I/O Channel)

---- 在CPU與I/O設備之間增加了設備控制器後,已能大大減少CPU對I/O的干預,但當主機所配置的外設很多時,CPU的負擔仍然很重。

 (設備控制器:設備控制器是計算機中的一個實體,其主要職責是控制一個或多個I/O設備,以實現I/O設備和
計算機之間的數據交換。它是CPU與I/O設備之間的接口,它接收從CPU發來的命令,並去控制I/O設備工作,
以使處理機從繁雜的設備控制事務中解脫出來

爲此,在CPU和設備控制器之間又增設了通道。其主要目的是爲了建立獨立的I/O操作,不僅使數據的傳送能獨立於CPU,而且也希望有關對I/O操作的組織、管理及其結束處理儘量獨立,以保證CPU有更多的時間去進行數據處理。

---- 或者說其目的是:使一些原來由CPU處理的I/O任務轉由通道來承擔,從而把CPU從繁雜的I/O任務中解脫出來。在設置了通道後,CPU只需向通道發送一條I/O指令。通道在收到該指令後,便從內存中取出本次要執行的通道程序,然後執行該通道程序,僅當通道完成了規定的I/O任務後,才向CPU發中斷信號。

---- 實際上,I/O通道是一種特殊的處理機,它具有執行I/O指令的能力,並通過執行通道(I/O)程序來控制I/O操作。但I/O通道又與一般的處理機不同,主要表現在以下兩個方面:

1)其指令類型單一,這是由於通道硬件比較簡單,其所能執行的命令主要侷限於與I/O操作有關的指令。

2)通道沒有自己的內存,通道所執行的通道程序是放在主機的內存中的,換言之,是通道與CPU共享內存。


2、通道類型

---- 通道是用於控制外圍設備(包括字符設備塊設備)的。由於外圍設備的類型較多,且其傳輸速率相差甚大,因而使通道具有多種類型。

根據信息交換方式的不同,可把通道分成以下三種類型:

1)字節多路通道(Byte Multiplexor Channel)

這是一種按字節交叉方式工作的通道。它通常都含有許多非分配型子通道,其數量可從幾十到數百個,每一個子通道連接一臺I/O設備,並控制該設備的I/O操作。這些子通道按時間片輪轉方式共享主通道。當第一個子通道控制其I/O設備完成一個字節的交換後,便立即騰出主通道,讓給第二個子通道使用;當第二個子通道也完成一個字節的交換後,同樣也把主通道讓給第三個子通道,依此類推。

-- 當所有子通道輪轉一週後,重又返回來由第一個子通道去使用字節多路主通道。這樣,只要字節多路通道掃描每個子通道的速率足夠快,而連接到子通道上的設備的速率不是太高時,便不致丟失信息。

2)數組選擇通道(Block Selector Channel)

字節多路通道不適於連接高速設備,這推動了按數組方式進行數據傳送的數組選擇通道的形成。這種通道雖然可以連接多臺高速設備,但由於它只含有一個分配型子通道,在一段時間內只能執行一道通道程序,控制一臺設備進行數據傳送,致使當某臺設備佔用了該通道後,便一直由它獨佔,即使是它無數據傳送,通道被閒置,也不允許其他設備使用該通道,直至該設備傳送完畢釋放該通道。這種通道的利用率很低。

3)數組多路通道(Block Multiplexor Channel)

---- 數組選擇通道雖有很高的傳輸速率,但它卻每次只允許一個設備傳輸數據。數組多路通道是將數組選擇通道傳輸速率高和字節多路通道能使各子通道(設備)分時並行操作的優點相結合而形成的一種新通道。它含有多個非分配型子通道,因而這種通道既具有很高的數據傳輸速率,又能獲得令人滿意的通道利用率。因此該通道被廣泛的用於連接多臺高、中速的外圍設備,數據傳送是按數組方式進行的。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章