I/O操作技術

來源:互聯網
上載者:User

對I/O操作有三種可能的技術:可程式化I/O、中斷驅動I/O、直接記憶體存取(DMA)

可程式化I/O

當處理器正在執行程式並遇到一個與I/O相關的指令時,它通過給相應的I/O模組發命令來執行這個指令。使用可程式化I/O操作時,I/O模組執行請求的動作並設定I/O狀態寄存器中相應的位,它並不進一步通知處理器,尤其是它並不中斷處理器。因此處理器在執行I/O指令後,還要定期檢查I/O模組的狀態,以確定I/O操作是否已經完成。

如果使用這種技術,處理器負責從記憶體中提取資料以用於輸出,並在記憶體中儲存資料以用於輸入。I/O軟體應該設計為由處理器執行直接控制I/O操作的指令,包括檢測裝置狀態、發送讀命令或寫命令和傳送資料,因此指令集中包括以下幾類I/O指令:

控制:用於啟用外部裝置,並告訴它做什麼。

狀態:用於測試與I/O模組及其外圍裝置相關的各種狀態條件。

傳送:用於在儲存空間寄存器和外部裝置間讀資料或寫資料。

缺點:這是一個耗時的處理,處理器總是處於沒有用的繁忙中。

中斷驅動I/O

處理器給模組發出I/O命令,然後繼續做其他一些有用的工作。當I/O模組準備好與處理器交換資料時,它將打斷處理器的執行並請求服務。處理器和前面一樣執行資料傳送,然後恢複處理器以前的執行過程。

缺點:由於資料中的每個字無論從儲存空間到I/O模組還是從I/O模組到儲存空間都必須通過處理器處理,這導致中斷驅動I/O仍然會花費很多處理器時間。

直接記憶體存取

對於前面兩種形式的I/O,處理器都需要主動幹預在儲存空間和I/O模組之間的資料傳送,並且任何資料傳送都必須完全通過處理器。因此前兩種I/O形式由兩方面固有的缺陷:

I/O傳送速度受限於處理器測試裝置和提供服務的速度

處理器忙於管理I/O傳送的工作,必須執行很多指令以完成I/O傳送

當需要移動大量的資料時,需要使用一種更有效技術:直接記憶體存取(DMA)。DMA功能可以由系統匯流排中一個獨立的模組完成,也可以併入到一個I/O模組中。不論採用哪種形式,該技術的工作方式如下所示:當處理器要讀或寫一塊資料時,它給DMA模組產生一條命令,發送以下資訊:

是否請求一次讀或寫

涉及的I/O裝置的地址

開始讀或寫的儲存空間單元

需要讀或寫的字數

之後處理器繼續其它工作。處理器把這個操作委託給DMA模組,由該模組負責處理。DMA模組直接與儲存空間互動,傳送整個資料區塊,每次傳送一個字(16位系統)。這個過程不需要處理器參與。當傳送完成後,DMA模組發一個中斷訊號給處理器。因此只有在開始傳送和傳送結束時處理器才會參與。

DMA模組需要控制匯流排以便於儲存空間進行資料傳送。由於在匯流排使用中存在競爭,當處理器需要使用匯流排時要等待DMA模組。注意,這並不是一個中斷,處理器沒有儲存上下文環境去做其他的事情,而是僅僅暫停一個匯流排周期(在匯流排上傳送一個字的時間(16位系統))。其總的影響是在DMA傳送過程中,當處理器需要訪問匯流排時處理器的執行速度會變慢。

以下是三種技術的流程圖:



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.