2013-07-30 33 views
0

我想寫一些C代碼能夠查詢PowerPC上的處理器屬性,就像可以在x86上使用cpuid一樣。我追求品牌,型號,步進,SIMD寬度,可用操作等事情,以便可以在運行時確認代碼正在兼容平臺上使用,然後纔會有事情發生。是否有像x86 cpuid()可用於PowerPC?

在PowerPC上有這樣做的一般機制嗎?如果是這樣,那麼可以在哪裏閱讀?

+1

是不是真的有一個確切的模擬,你希望得到什麼特定的屬性? – Dan

+1

如果在PowerPC文檔中找不到,您可以隨時查看源代碼,以找到能夠在PowerPC上運行的任何開源操作系統。 –

+0

謝謝。我添加了一個感興趣的屬性列表。 – mabraham

回答

4

請注意,PowerPC不像x86一樣有許多擴展/功能。需要讀取可能取決於內核的特定特權寄存器。

我在Linux上檢查過,你可以訪問PVR,在內核中有一個陷阱來管理它。

如果支持Altivec,內存和L2高速緩存大小,則可以返回讀取/ proc/cpuinfo ...但這並不方便。

更好的解決方案在此描述的是: http://www.freehackers.org/thomas/2011/05/13/how-to-detect-altivec-availability-on-linuxppc-at-runtime/

使用的/ proc /自/ auxv提供「傳遞給該過程在EXEC時間ELF解釋器信息」的內容。

的示例是關於Altivec的但可以得到的其它特徵(中列出包括 「ASM/cputable.h」):32或64位的CPU,AltiVec技術,SPE,FPU,MMU,4XX MAC,...

最後,你會發現在高速緩存(大小,行大小,相關性,...)的信息,請查看文件: /SYS /設備/系統/ CPU/CPU0 /緩存

3

PowerPC沒有模擬CPUID指令。您可以得到的最接近的是讀取PVR(處理器版本寄存器)。不過,這是一位主管特權的SPR。但是,一些操作系統,例如FreeBSD,會陷入並執行用戶空間進程。

PVR是隻讀的,對任何給定的處理器型號和版本都應該是唯一的。鑑於此,您可以確定給定CPU提供的功能。

相關問題