先問是不是有些不基於塊訪問的裝置, 比如鍵盤, 印表機等, 還是得透過CPU.我猜題主想問的可能是DMA(Direct Memory Access), 直接儲存器訪問為什麼不經過CPU.I/O發展是經過一下一步步發展的1. CPU直接控制外圍裝置(硬碟磁帶等), 在簡單微處理器中常用2. 增加I/O模組, 將CPU與外圍裝置解耦, CPU只與I/O模組打交道. 只需定義好介面, CPU廠商和外圍裝置廠商就可以相互根據介面開發, 互不影響3. 增加中斷方式, 還是經過I/O模組, 只不過I/O模組完成之後, 只需通知CPU即可, CPU在等待階段完全可以去做其他事情, 提高CPU利用率.4. I/O模組增加DMA控制器. 之前的階段是每次只傳輸一個字, 就通知CPU, 就發起一次中斷, CPU放到暫存器中, 再放到記憶體中. 這樣CPU就會被連續的中斷打斷, 不斷切換程序, 上下文, 效率很低.DMA控制器類似於一個小的CPU, 有自己的暫存器(記錄主存地址和取到的字的count等). CPU可以發起一個DMA請求, 傳入讀寫操作型別, 相關I/O裝置地址, 記憶體的起始地址, 要操作的字數.然後DMA就可以獲取匯流排的控制權, 將一大塊記憶體和外部I/O讀入或寫出.等操作完成後, 再通知CPU. 釋放匯流排控制權.缺點是:系統匯流排也是一種資源, DMA操作期間, 當處理器需要訪問匯流排時, 執行速度會變慢.但是總得來說, DMA是一種高效傳輸方式.
先問是不是有些不基於塊訪問的裝置, 比如鍵盤, 印表機等, 還是得透過CPU.我猜題主想問的可能是DMA(Direct Memory Access), 直接儲存器訪問為什麼不經過CPU.I/O發展是經過一下一步步發展的1. CPU直接控制外圍裝置(硬碟磁帶等), 在簡單微處理器中常用2. 增加I/O模組, 將CPU與外圍裝置解耦, CPU只與I/O模組打交道. 只需定義好介面, CPU廠商和外圍裝置廠商就可以相互根據介面開發, 互不影響3. 增加中斷方式, 還是經過I/O模組, 只不過I/O模組完成之後, 只需通知CPU即可, CPU在等待階段完全可以去做其他事情, 提高CPU利用率.4. I/O模組增加DMA控制器. 之前的階段是每次只傳輸一個字, 就通知CPU, 就發起一次中斷, CPU放到暫存器中, 再放到記憶體中. 這樣CPU就會被連續的中斷打斷, 不斷切換程序, 上下文, 效率很低.DMA控制器類似於一個小的CPU, 有自己的暫存器(記錄主存地址和取到的字的count等). CPU可以發起一個DMA請求, 傳入讀寫操作型別, 相關I/O裝置地址, 記憶體的起始地址, 要操作的字數.然後DMA就可以獲取匯流排的控制權, 將一大塊記憶體和外部I/O讀入或寫出.等操作完成後, 再通知CPU. 釋放匯流排控制權.缺點是:系統匯流排也是一種資源, DMA操作期間, 當處理器需要訪問匯流排時, 執行速度會變慢.但是總得來說, DMA是一種高效傳輸方式.