操作系統-I/O(1)設備控制器


I/O設備通常是物理上相互獨立的設備,它們一般通過通信總線(電纜)與I/O控制器連接。
例如,圖中IDE接口是通信總線而非I/O總線。
I/O控制器(I/O接口)在擴展卡或者南橋芯片內,通過I/O總線、北橋芯片連接CPU和MM
I/O硬件建立了外設與主機之間的“通路”:主機----北橋---I/O總線----南橋(設備控制器)----電纜——外設
把printf("hello, world\n”)這樣的用戶I/O請求,轉換為對設備的控制命令並完成設備I/O任務,需要I/O軟件與I/O硬件之間的協調工作
 
為達到模塊化和通用性的設計目標,通常將I/O設備(又稱外圍設備、控制設備)中的機械部件和電子部件分開處理。
所有的設備的機械部件都可以抽象成該通用模型:
操作系統與控制器交互,而非與設備交互,外設通過電纜與設備控制器(I/O接口)進行數據、狀態和控制信息的傳送。
控制邏輯根據控制信息控制設備的操作,並檢測設備狀態
緩沖器用於保存交換的數據信息
變換器用於在電信號形式(內部數據)和其他形式的設備數據之間進行轉換
其中,電子部件稱為設備控制器,又稱為設備適配器、I/O控制器、I/O控制接口,簡稱I/O模塊或I/O接口,是CPU與設備之間的接口,負責:
  • 數據緩沖:
主存和CPU寄存器的存取速度都非常快,而外設的速度則較低,在設備控制器中引入數據緩沖寄存器后,輸出數據時, CPU只要把數據送到數據緩沖寄存器即可;在輸入數據時,CPU只要從數據緩沖寄存器取數即可。在設備控制器控制將數據緩沖寄存器的數據輸出到外設或從外設讀人數據時,CPU可以做其他事情。
  • 錯誤和就緒檢測
提供了錯誤和就緒檢測邏輯,並將結果保存在狀態寄存器,以供CPU查用。
狀態信息包括各類就緒和錯誤信息,如:外設是否完成打印或顯示、是否准備好輸人數據以供CPU讀取、打印機是否發生缺紙、磁盤數據是否發生檢驗錯等。 
  • 控制和定時
接收和識別CPU或通道發來的控制信息和定時信號,根據相應的定時和控制邏輯,向外設發送控制信號,以控制外設進行相應的處理。主機送來的控制信息存放在控制寄存器中。 
  • 數據格式的轉換
提供數據格式轉換部件(如進行串-並轉換的移位寄存器),使通過外部接口得到的數據轉換為內部接口需要的格式,或在相反的方向進行數據格式轉換。
例如, 從磁盤驅動器以二進制位的形式讀出或寫入后,在磁盤控制器中,應對讀出的數據進行串-並轉換,或對寫入的數據進行並串轉換。
  • 當連接多台設備時,設備地址識別
圖為設備控制器的一般結構,不同I/O模塊在復雜性和控制外設的數量上相差很大,由狀態/控制寄存器、數據緩沖寄存器、地址譯碼器和I/O控制邏輯、外設接口控制邏輯組成
右邊通過接口電纜和外設相連,左邊插到插槽上(如PCI插槽)或者直接做在南橋芯片里、南橋芯片再通過I/O總線與主機相連
將I/O控制器中CPU能夠訪問的各類寄存器稱為I/O端口,驅動程序(控制外設進行輸入/輸出的底層I/O軟件)通過訪問I/O端口控制外設進行I/O,對I/O端口讀寫就是向I/O設備送出命令或從設備讀狀態或讀/寫數據。
端口有三類:
  • 控制端口(命令端口):CPU通過out指令將控制命令(命令字或者控制字)送到控制寄存器來啟動外設工作;控制器對命令字進行解釋形成相應控制信息,控制外設進行工作
  • 狀態端口:CPU通過in指令讀取狀態寄存器了解外設和設備控制器的狀態;
  • 數據端口:訪問數據緩沖寄存器進行數據的輸入和輸出。
一個I/O控制器會占有多個端口地址,I/O端口必須編號后,CPU才能訪問它,I/O設備的尋址方式就是I/O端口的編號方式:
  • 統一編址方式(存儲器映射方式)
與主存空間統一編址,主存單元和I/O端口在同一個地址空間中。將I/O端口映射到某個主存地址空間的不同段,故也稱存儲器映射方式
例如,RISC機器、Motorola公司的處理器等采用該方案,VRAM(顯示存儲器)通常也和主存統一編址。
此時訪問I/O端口也用訪存指令move,根據地址范圍不同來區分;可用AND、OR或TEST等指令直接操作設備控制器中的控制寄存器或狀態寄存器。
優點:系統吞吐率高,外設或I/O端口數目除了受總存儲容量的限制外, 幾乎不受其他因索的限制。
缺點:減少了可尋址的主存空間;由於在識別I/O端口時全部地址線都需參與地址譯碼, 使譯碼電路變復雜了,並需用較長時間進行地址譯碼, 所以尋址時間變長了。
  • 獨立編址方式(特殊I/O指令方式)
單獨編號,不和主存單元一起編,使成為一個獨立的I/O地址空間。因為需專門I/O指令,故也稱為特殊I/O指令方式
例如,Intel處理器就是獨立編址方式
通過指令操作碼來區分,使用專門的I/O指令完成,他們是一種特權指令。IA-32中的I/O指令:in、ins、out和outs
如 IN AL, DX:DX中存放I/O端口地址,將I/O端口中的內容取到AL中
優點: I/O端口數比存儲器單元少得多, 選擇時只需少量地址線,設備控制器中的地址譯碼邏輯比較簡單,尋址速度快;程序的結構比較清晰, 容易判斷出哪部分代碼是用於I/O操作的
缺點:I/O指令往往只提供簡單的傳輸操作, 故程序設計的靈活性差一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM