Linux控制器(Controller)與適配器(Adapter)

CPU實現IO操作時,通過控制總線和數據總線向用戶發送數據和指令,當然這些邏輯指令對於磁盤,USB來說,就好比蝌蚪文一樣傻傻看不清楚,就好比你在一個只懂說法語的人面前說了一口流利的英語,他當然不會明白你說的是什麼,自然不會按照你說的去做;因此,

來自CPU的邏輯指令就需要一個設備來將其轉換爲對應設備自身可以識別和執行的控制信號,這就需要控制器/適配器和驅動程序的配合。

 

控制器(Controller):集成在CPU主板上並可以將CPU發來的邏輯指令通過特定協議轉換爲設備可以識別的控制信號;

適配器(Adapter):獨立的外部設備,可以實現和控制器一樣的功能,如網卡等;

協議:爲了能使交互雙方可以識別彼此信號,我們指定一種規則/標準,這種規則/標準可以用來規定數據/指令各個字段的意義以及代表的操作。

 


如上圖所示,CPU向磁盤發起IO操作指令,該指令首先通過控制器將該指令轉換爲特定的指令格式,該指令格式分爲不同的數據段,分別指出了該指令的類別,要執行的操作,以及要操作的數據的起始地址等;

磁盤上的控制芯片類似於小型的CPU,它內嵌了驅動程序,這些驅動程序並非硬件,而是可以讀取磁盤數據的軟件,驅動程序的作用就是識別邏輯指令並執行相應操作,驅動磁盤完成的IO操作過程;

轉換後的指令傳到控制芯片上時,控制芯片上的控制器會解讀這段數據,並根據指令的要求,結合驅動程序,對磁盤上的數據進行讀寫操作。

驅動程序一般有硬件廠商來提供,針對特定的硬件,而平常我們所看到的的公版驅動,雖然適用性更廣一些,但是性能一般不比前者。

 

一般情況下,對於磁盤來說,控制數據/指令轉換的機制都是靠控制器來實現的;

但是對於網卡,USB等設備來說,則是靠適配器來實現的。


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