2017-03-25 19 views
0

我知道如何從特定的操作系統進行頻率或電壓調整有很多問題,但我對此不感興趣。我來自編譯器背景,希望知道如果編譯器能夠執行頻率調整,如果它有關於正在編譯的應用程序的信息。如何從軟件控制動態電壓和頻率調節?

具體來說,我想知道一個特定的彙編指令是用來修改CPU使用的頻率還是電壓,或者是不同的。

+0

不,沒有特定的彙編指令。通常,這些動態變化由CPU本身和/或芯片組中的硬件來管理。 –

+0

也許[這個鏈接到英特爾AMT技術](https://en.wikipedia.org/wiki/Intel_Active_Management_Technology)會給你一些提示。 – zx485

+2

'wrmsr'在某種意義上。但細節是特定於模型的,不能在用戶模式下使用。 – harold

回答

3

電壓和頻率調整通常由硬件和軟件的組合來控制。

除此之外,不可能給出完全通用的答案,因爲詳細信息是硬件特定的,因此大多數適用於Intel x86硬件。其他「大」的CPU很可能類似,但像微控制器這樣的東西會有很大的不同。因此,上面的「軟件」部分可能會給你一些希望,即可以從應用程序中控制它,但是軟件方面通常僅限於內核,或者在某些情況下以root身份運行進程。尤其是,近期英特爾的大部分頻率控制都可以使用MSR寄存器進行調整,並且您可以使用msr內核模塊和rdmsrwrmsr命令從用戶區訪問該命令。

這不是一個做事的推薦方式,因爲你正在改變的MSR內核還設置,這樣的事情可能會失控走了,你的變化可以任意撤銷等

近期趨勢x86將更多的「頻率控制」循環推向硬件,硬件可以更快速地響應,並且可以訪問應用程序沒有的應用程序行爲的細粒度度量。在英特爾,這就是所謂的HWP(硬件p狀態),並體現在用於Linux(在最近的英特爾上是默認的)的intel_pstate驅動器以及Windows上的類似的東西。在這裏,軟件被降級爲給硬件更多的一般提示,但通常不直接控制頻率。

最後,關於具體的電壓:這通常在x86上通常不能直接控制 - 您可以通過MSR設置您的設置,並且電壓由硬件設置爲適當的級別。某些主板或「愛好者」CPU可能會提供可以在運行時直接設置電壓的驅動程序,但這些遠不是通用的。