acpi這部分其實比較重要,因為它關係到了電源、功耗、效能。另外,與os關係比較大。
1.對bios而言,acpi最直觀的就是電源功耗,從而影響到cpu效能,具體的設定,就在bios setup介面advanced選單下,高階電源管理這塊,會有許多設定選項。還有cpu的一些狀態設定,例如c-state、p-state、turbo mode等等。實際上,就是往相關暫存器裡面寫值。更改某個選項,本質上是修改暫存器中某一位或者某幾位的值。
2.對os而言,acpi這塊很重要。例如,你可以在linux下面使用「lsmod | grep acpi」檢視具體的相關模組;也可以在windows下使用rw工具檢視acpi table。
對於os而言,是怎麼識別這些模組的呢?
在bios code中,會有一些asl或者asi檔案,這些檔案中的code,由bios寫,但是,它是提供給os執行的。所以很多時候,os層面的問題,需要通過修改bios來解決。下面舉一些實際的例子:
(1)os中某些模組(例如acpi_pad),這個模組本意是好的,但是現在的linux kernel有乙個bug,會導致cpu負載變高,必須要禁用。每裝乙個os,就去禁用該模組,是很low的處理方式;對於bios而言,該模組屬於acpi table中的某一小部分,那麼我們直接在bios中將其禁用(一般是acpi000c),安裝啟動os時,就不會有該模組產生了,問題也就從根本上解決了。
(2)伺服器廠商常做的一件事是系統認證,有的時候,你會發現usb測試不通過。為什麼呢?因為用的是ami或者insyde的code,主機板是仿照intel公板來的,軟體對應關係和實際的硬體關係,對應不上。雖然可以正常上電開機,裝os,但是進行這種專業性的測試時,就會失敗。這裡就涉及到asl的另外乙個特點,它可以將device上報給os。
最後,推薦大家一本書《acpi_6_0_errata_a.pdf》,其實就是acpi6.0規範,裡面有詳細的acpi內容講解,以及asl(acpi source language)的介紹。
BIOS入門基礎 OS Loader
很多大公司,一般都會有自己專門的os小組,但一般都不會有bios小組,因為bios這玩意,相容性太強了,以至於常常被人們所忽略。而很多做伺服器的公司,有bios小組和os小組,但怎麼說了,劃分也太清楚。在我看來,作為乙個合格的bios工程師,必須要懂os 作為乙個os工程師,要了解bios 不奢求懂...
ACPI基礎 ASL語言
asl的全稱是acpi source language。在acpi基礎中已經有介紹過asl語言,它是用來描述硬體資訊以及相關硬體操作給os使用的表示式。簡單來說,asl可以看成是類似c語言的計算機語言,不過它功能更加的單一。不過雖然功能單一,但是因為涉及到各種各樣的硬體,所以實際上需要記憶的東西會非...
C 基礎入門
類 類是資料和函式的封裝體,類也是一種資料型別。在類中資料稱為資料成員,函式稱為成員函式。類的定義一般形式 class 類名 資料成員同結構struct中的資料是一致的,成員函式是對類的私有資料成員操作的惟一途徑。類的成員函式宣告的結構如下 型別 成員函式名 參數列 最後的分號不可以省略 成員函式定...