CPU與IO外設之間是怎樣相互通訊的?

時間 2021-05-05 17:32:24

1樓:

CPU和外設之間交換一般通過匯流排(BUS),例如PCIe,AXI,Wishbone,AHB,I80等匯流排

軟體如果需要在乙個螢幕上進行畫圖通常有兩種辦法:

1 由軟體指令對畫布進行填充和圖形合成,將畫布寫入顯示記憶體中。比較常見的情況是微控制器直接操作顯示屏或者Linux上的framebuffer都是這樣操作的

2 有2D圖形繪圖加速器(hardware acceleration)的情況下由軟體呼叫2D圖形繪圖加速介面(Graphics API),該介面收到呼叫後將API呼叫轉換為硬體可執行的特定繪圖指令傳送到加速器中,加速器更新顯示快取後由顯示驅動器(Display Engine/TFT controller/etc.)自動更新畫面,高階點的裝置都是這麼執行的例如電腦和手機

CPU於任何外設互動的時候都不是直接由CPU進行互動的,通常來說硬體和CPU需要在硬體和軟體上同時進行相容才可以正確的執行,例如家用電腦通常使用PCIe匯流排將CPU和顯示卡進行連線,連線並啟動時顯示卡會將自己的資訊在BIOS中註冊為PCIe裝置同時可以響應BIOS的繪圖中斷,UEFI則註冊為Graphic output device。

在進入作業系統後,通常情況下作業系統會提供一套繪圖API,GPU或者顯示裝置會由廠家開發與繪圖API相相容的驅動,該驅動決定了上層圖形軟體在呼叫API時應該進行的對顯示裝置的操作,例如寫入資料或讀出資料。

對於X86平台來說外設可以通過IO訪問或記憶體訪問,IO訪問和記憶體訪問對於外設來說均為透明的,在訪問時IO訪問或記憶體訪問都不會對外設內部的記憶體結構產生影響。記憶體訪問的基址可由查詢作業系統記憶體分配表得到邏輯位址進行訪問。對於ARM平台,外設的位址是由匯流排固定配置的或通過核心進行預分配,取得基址的方式有驅動內直接硬編碼(不支援Linux裝置樹或其他外設配置方案的核心、微控制器或某些FPGA SoC外設)、裝置樹定義外設基址、核心記憶體分配表等方式。

就目前來說,訪問外設並不需要BIOS(已淘汰),通常訪問外設會選擇使用DMA和輪詢而非中斷,尤其是PCIe這類大吞吐裝置

2樓:wyf

你說的這些東西顯示卡廠家驅動做好了,調API就可以了。

位置引數沒有意義,有也要經過對映到物理畫素上去。

BIOS初始化的時候會輪循外設,作業系統會根據硬體讀出來的引數初始化記憶體位址。

IO操作和中斷兩碼事。

大資料與雲計算之間的關係是怎樣的?

用心閣 大資料的本質就是利用計算機集群來處理大批量的資料,大資料的技術關注點在於如何將資料分發給不同的計算機進行儲存和處理。雲計算的本質就是將計算能力作為一種較小顆粒度的服務提供給使用者,按需使用和付費,體現了 經濟性,不需要購買整個伺服器 快捷性,即刻使用,不需要長時間的購買和安裝部署 彈性,隨著...

閱讀量很小與寫網文之間的關係是怎樣的?

開時 這個問題其實很難。看了回答樓上的回答都很不錯,我就不班門弄斧了。可以這樣說,寫網文,能成功的,小白文也好,小小白文也好,人家能賺錢,說明有一定道理。千萬不要輕視人家,什麼時候,你能達到看一篇網文時,能知道他的優劣利弊,什麼時候就算可以了。想寫,路還長著呢。 隨便寫個一兩萬字吧。不管是創作衝動,...

科普創作與科研工作本身之間的關係是怎樣的?

Panonsense 科普 與 科研 看似所涉及的都是一樣的東西,但其實卻大不一樣因為它們的目的 方法和形式都是完全不同的 科研 的目的是嘗試擴充套件已有科學與技術的邊界,講究嚴謹可論證而 科普 的目的是嘗試讓行外人理解已有的科學與技術,講究通俗易懂大師的話很難懂,一方面可能是因為境界的高度超出了語...