ACPI和APIC有什麼關係?

2021-04-13 07:13:57 字數 2942 閱讀 7718

很多人問道了什麼acpi,什麼是apic,他們有沒有關係?名字這麼相近。下面給出我對其的一些理解,具體的解釋可以檢視核心文件庫的核心引數檔案:

/usr/src/`uname -r`/documents/kernel-parameters.txt

acpi就是advanced configuration and power inte***ce的縮寫,意思是「高階配置與電源介面」。這是英特爾、微軟和東芝共同開發的一種電源管理標準。

acpi可實現以下功能:   

1、使用者可以使外設在指定時間開關;   

2、使用膝上型電腦的使用者可以指定計算機在低電壓的情況下進入低功耗狀態,以保證重要的應用程式執行;   

3、作業系統可以在應用程式對時間要求不高的情況下降低時鐘頻率;

4、作業系統可以根據外設和主機板的具體需求為它分配能源;

5、在無人使用計算機時可以使計算機進入休眠狀態,但保證一些通訊裝置開啟;

6、即插即用裝置在插入時能夠由acpi來控制。

不過,acpi和其他的電源管理方式一樣,要想享受到上面這些功能,必須要有軟體和硬體的支援。在軟體方面,windows 98及其後續產品和windows 2000都對acpi給予了全面的支援;而linux的核心目前對此支援得並不是太理想。硬體方面比較麻煩,除了要求主機板、顯示卡和網絡卡等外設要支援acpi外,還需要機箱電源的配合。電源在提供5伏電壓給主機板的同時,還必須使電流穩定在720毫安以上才可以,這樣它才能夠實現電腦的「睡眠」和「喚醒」。

acpi共有六種狀態,分別是s0到s5,它們代表的含義分別是:

s0--實際上這就是我們平常的工作狀態,所有裝置全開,功耗一般會超過80w;

s1--也稱為pos(power on suspend),這時除了通過cpu時鐘控制器將cpu關閉之外,其他的部件仍然正常工作,這時的功耗一般在30w以下;(其實有些cpu降溫軟體就是利用這種工作原理)

s2--這時cpu處於停止運作狀態,匯流排時鐘也被關閉,但其餘的裝置仍然運轉;

s3--這就是我們熟悉的str(suspend to ram),這時的功耗不超過10w;

s4--也稱為std(suspend to disk),這時系統主電源關閉,但是硬碟仍然帶電並可以被喚醒;

s5--這種狀態是最乾脆的,就是連電源在內的所有裝置全部關閉,功耗為0。

我們最常用到的是s3狀態,即suspend to ram(掛起到記憶體)狀態,簡稱str。顧名思義,str就是把系統進入str前的工作狀態資料都存放到記憶體中去。在str狀態下,電源仍然繼續為記憶體等最必要的裝置供電,以確保資料不丟失,而其他裝置均處於關閉狀態,系統的耗電量極低。一旦我們按下power按鈕(主機電源開關),系統就被喚醒,馬上從記憶體中讀取資料並恢復到str之前的工作狀態。記憶體的讀寫速度極快,因此我們感到進入和離開str狀態所花費的時間不過是幾秒鐘而已;而s4狀態,即 std(掛起到硬碟)與str的原理是完全一樣的,只不過資料是儲存在硬碟中。由於硬碟的讀寫速度比記憶體要慢得多,因此用起來也就沒有str那麼快了。 std的優點是只通過軟體就能實現,比如windows 2000就能在不支援str的硬體上實現std。

之前的電源管理是apm(advanced power management),那麼acpi和apm相比有什麼區別呢?

2、acpi與apm比較

apm 1.0&1.1:由bios執行電源管理;

apm 1.2:作業系統定義電源管理時間,由bios負責執行;

acpi:bios收集硬體資訊,定義電源管理方案;由作業系統負責執行。

apm是一種軟體解決方案,因此是與作業系統有關的, 而acpi是工業標準,包括了軟體和硬體方面的規範。

apic (高階可程式設計中斷控制器)對計算機來講有兩個作用,

一是管理irq的分配,可以把傳統的16個irq擴充套件到24個(傳統的管理方式叫pic),以適應更多的裝置。

二是管理多cpu。由於nf2主機板並不支援多cpu,所以,apic關閉直接的影響是減少了可用的irq。

不過,如果板卡不是非常多的話,關閉 apic對系統是沒有什麼影響的。

要實現**p功能,我們使用的cpu必須具備以下要求:

cpu內部必須內建apic單元。intel 多處理規範的核心就是高階可程式設計中斷控制器(advanced programmable interrupt controllers--apics)的使用。cpu通過彼此傳送中斷來完成它們之間的通訊。通過給中斷附加動作(actions),不同的cpu可以在某種程度上彼此進行控制。每個cpu有自己的apic(成為那個cpu的本地apic),並且還有乙個i/o apic來處理由i/o裝置引起的中斷,這個i/o apic是安裝在主機板上的,但每個cpu上的apic則不可或缺,否則將無法處理多cpu之間的中斷協調。

apic可能遇到的問題,很多這類問題可以通過bios更新來解決。

下面的是通過更改hal型別來解決

cpu實際執行頻率與bios設定頻率不符

nf2的使用者大約有10%的會出現cpu實際執行頻率與bios設定頻率不符的問題。我們稱之為「頻率不對」。

這種現象帶來的直接後果就是在測試3dmark或跑3d遊戲的時候,會感覺不流暢,也稱之為「頓」。

一般在更改bios設定後、更新驅動後重啟時,用測試軟體如aida32、mbm5等可以看到cpu的執行頻率和你在bios裡設定得不一樣,而且差距很大。這個時候,用super pi測試cpu速度,會比平常花費時間長好幾秒,用3dmark跑測試,會比平常低幾百分甚至上千分。在3dmark中看到的cpu頻率,也與bios設定不符合。

如果出現這種情況,則屬於我們所討論的「頻率不對」的問題。

不過,不是所有的3d遊戲「頓」都是這個原因。判斷的方法是:如果你只有個別遊戲「頓」,或者用上述軟體測試頻率正確,就不是此問題。

如果判斷確實屬此問題,解決的方法也很簡單,經過網友討論,只要關閉apic功能即可。(注意,是apic,不是acpi)。

有一些伺服器(比如

ibm的,

hp的),安裝linux時,會給出核心的錯誤,導致無法安裝,這個時候可以在安裝的時候輸入

linux acpi=off noapic

應該是安裝上的。

ACPI和APIC有什麼關係?

acpi和apic有什麼關係?很多人問道了什麼acpi,什麼是apic,他們有沒有關係?名字這麼相近。下面給出我對其的一些理解,具體的解釋可以檢視核心文件庫的核心引數檔案 usr src uname r documents kernel parameters.txt acpi就是advanced c...

什麼是ACPI,什麼是APIC

acpi和apic有什麼關係?很多人問道了什麼acpi,什麼是apic,他們有沒有關係?名字這麼相近。下面給出我對其的一些理解,具體的解釋可以檢視核心文件庫的核心引數檔案 usr src uname r documents kernel parameters.txt acpi就是advanced c...

runloop 和執行緒有什麼關係

每條執行緒都有 唯一的乙個 runloop 物件與之對應的 主線程的 runloop 是自動建立並啟動 子執行緒的 runloop 需要手動建立 子執行緒的 runloop 建立步驟如下 在子執行緒中呼叫 nsrunloop currentrunloop 建立 runloop 物件 懶載入,只建立一...