現在只有單核心多線程
那有可能做出 雙核心 共用一個線程的可能性嗎?
因為很多軟體其實只支援單線程或雙線程
所以多核心CPU只能吃單核心
那如果,能夠直接發展雙核心 但是只用一個線程
軟體進入CPU後 直接由CPU內部自動分配處理
不需要再透過軟體支援
這樣只吃單核心的軟體 不就能用上雙核心了嗎?
不知道有沒有辦法做出這樣的CPU
一個小路人 wrote:
那如果,能夠直接發展雙核心 但是只用一個線程
軟體進入CPU後 直接由CPU內部自動分配處理
不需要再透過軟體支援
這樣只吃單核心的軟體 不就能用上雙核心了嗎?
不知道有沒有辦法做出這樣的CPU...(恕刪)
當代主流的thread-based作業系統的設計,是以(邏輯)核心為單位去分配執行緒,也就是一對一的對應,如果兩個核心「自動」跑去處理同一個執行緒、也就是脫離"作業"系統的管理,那就天下大亂了 。
因此,處理器廠商直接回歸到基本設計功力、加強每個核心的能力不就好了,何必要用繞路練邪功的方式?就算邪功練成,也得要有配合的作業系統,前提是真的寫得出來這樣的作業系統,還得有作業系統廠商/組織願意跳下苦海。
一個小路人 wrote:
現在只有單核心多線程...(恕刪)
那如果,能夠直接發展雙核心 但是只用一個線程
軟體進入CPU後 直接由CPU內部自動分配處理
=> out of order + instruction pool ..
只有 atom 改回 in order (但未來會改回 out of order ) .
當年 pentium Pro 就是先開始..不過 data 相依是個問題 .
目前 cpu 都是 pipeline + super_scaler ,本來就是 都是多條在跑,
很多 cpu 會指令切成小片段 去平行 .
有多個 thread , Intel hyper Thread 就是把 多工做到好
, 明明不是雙核心, 但可以騙 os 說有兩CPU 單元 ..
如同 全志 gpu 只是多個 thread 確說是多核 顯示chip .但是 intel 很大家 .
實際上 hyper thread 跟本沒法加速 ..
最大問題是軟體沒對 cpu 做平行最佳化過 , 因為 windows 軟體
一開始就沒考慮 平行最佳化 .
聽起來怪怪的,不知道這樣做的目的只是為了利用到多核心(多耗電?),
還是有其他更好的目的?
單核心去跑多線程,是為了能造成在同一時間內,
可以同時執行多個應用程式的錯覺.(如果以CPU時脈來看,其實永遠只有執行一個程式)
某種特殊情況下,也可視為充份利用CPU的執行能力.
多核心跑多線程,則是真正同時執行多個程式,
如果在應用程式有針對多核的前提設計下,
或是多核的OS設計可對應用程式做最佳化,
更可以縮短程式執行時間,
比如理論上2核可縮短單核1倍的執行時間(實際上有加速到0.4倍就很不錯了)
所以小弟有點好奇,有人會去設計多核心卻只跑單線程這種東西嗎?
這種設計可以做什麼特殊運用?
一般多核心就是多吃電,為什麼不直接只花費單核心去跑單線程?
另外為了協調多核心跑單線程,說不定還要額外花費同步的時間,
程式跑的比同級的單核更慢?
taiwan2008 wrote:
那如果,能夠直接發展雙核心 但是只用一個線程
軟體進入CPU後 直接由CPU內部自動分配處理
=> out of order + instruction pool ..
您真內行,至於樓主的想法,在60年代就有人提出解決辦法了(Tomasulo Algorithm)
chekun wrote:
就是因為CPU夠強才會設計單核多執行緒
如果設計成多核單執行緒 那多核除了IDLE還有什麼用處?
特殊運算用途不是也有多台電腦一起運算的
這樣不就有達成多核單執行的效果了嗎
CPU在設計的時候必須要做好散熱的考量,也要想辦法去避免hot spot
(hot spot在此指硬體上的熱能太集中於特定區塊,而不是指程式上最常被執行的部份)
下面這篇INTEL的PDF解釋的很清楚,以前也有中文的影片可以看,但後來不見了。
http://www.cs.jhu.edu/~spaa/2006/SPAA06-Lowney.pdf