在介紹讀取CPU風扇轉速相關的函式之前,需要了解讀取環控晶片Hardware Monitor暫存器的相關知識。
環控晶片顧名思義就是可以控制環境相關設定的晶片,除了控制這些設定以外,環控晶片通常會與一些重要的系統數值相連,如電壓(CPU核心電壓、記憶體電壓),環境溫度(CPU溫度、主機板溫度),風扇轉速(CPU風扇、系統風扇),讓使用者可以監控這些與系統相關且重要的數值,而在環控晶片中與這些系統數值相關的就是Hardware Monitor。
因為Hardware Monitor的暫存器數量很多,就像一般的環控晶片暫存器用logical device來區分,Hardware Monitor的暫存器則是以不同的Bank來區分,例如系統數值的讀值大部分都在bank 4,CPU風扇的控制則在bank 2。Hardware Monitor暫存器也是使用Index/Data埠的方式來存取,我們必須先到logical device B(主要負責設定Hardware Monitor)的暫存器位置0x60及0x61,分別代表hardware monitor的I/O位址的高位元組和低位元組,將兩者合而為一就可以得到完整的I/O位址,而這個I/O位址+0x05/0x06就是Hardware Monitor的Index/Data埠。至於要切換不同的bank則需要對Bank Select Register 0x4E填寫Bank number去切換bank,讀寫方式就類似於Day12所提,只是將2E/2F替換成Hardware Monitor I/O位址+0x05/0x06。詳細的暫存器介紹如下圖所示:
以上就是對Hardware Monitor暫存器簡單的介紹,明天會以實際在動態連結函庫中的實作詳細解說。