CPU 個數,核心數,線程數
我們在買電腦的時候,經常會看 cpu 的參數,對 cpu 的描述有這幾種:“雙核”、“雙核四線程”、“四核”、“四核四線程”、“四核八線程”……。
我們接觸的電腦基本上都隻有一個 cup。cpu 的個數很容易得到,螺絲刀拆開你的電腦數一下就行了。這沒有什麼好說的。
為了給電腦更高的性能,一個 cup 中內建了多個核心,這樣電腦的性能就成倍的提升。随着科技的發展,我們發現每個核心的性能也變的十分強大,于是一個核心又被分成兩個線程。但是,我們要注意的是,一個 cpu 分成多個核心,這是實體的分隔,拆開 cpu 是可以看到的;但是一個核心被分成兩個線程是一種超線程技術,也就是串代碼,作業系統會認為一個線程也是一個核心,有點欺騙作業系統的感覺。
如果作業系統說我的 cpu 有四核,這時我們要提高警惕,是真四核還是四線程(假四核)。
這是我的桌上型電腦 windows7:
任務管理器顯示有 4 核。
裝置管理器顯示依然為 4 核
我百度了一下:
原來我的電腦是假四核。
其實 windows 有一個指令是可以檢視的:
在 cmd 指令中輸入 “wmic”,回車;然後再輸入 “cpu get ”。
NumberOfCores:表示 CPU 核心數
NumberOfLogicalProcessors:表示 CPU 線程數
修改處理器個數
實體核心個數是不能修改的,但是假核心個數是可以修改的:
處理器個數修改成 3,儲存重新開機電腦。
任務管理器中已經改變:
裝置管理器未發生改變:
如何禁用超線程技術
Hyper-Threading 是 Intel 微處理器采用的一種技術,這種技術能夠讓微處理器在作業系統和應用程式中的性能表現的類似于兩個處理器一樣。
進入 BIOS,找到 Hyper-Threading 選項設定成 disable。
儲存設定,啟動電腦。
任務管理器發生了變化:
裝置管理器也發生了變化:
超線程這個東西并不是開了就一定比不開的好。
因為每個CPU核心裡ALU,FPU這些運算單元的數量是有限的,而超線程的目的之一就是在一個線程用運算單元少的情況下,讓另外一個線程跑起來,不讓運算單元閑着。
但是如果當一個線程整數,浮點運算各種多,目前核心運算單元沒多少空閑了,這時候你再塞進了一個線程,這下子資源就緊張了。兩線程就會互相搶資源,拖慢對方速度。
至于,超線程可以解決一個線程cache miss,另外一個可以頂上,但是如果兩個線程都miss了,那就隻有都在等了。這個還是沒有GPU裡一個SM裡很多warp,超多線程同時跑來得有效果。
是以,如果你的程式是單線程,關了超線程,免得别人搶你資源,如果是多線程,每個線程運算不大,超線程比較有用。