Re: [請益] 那些語言或程式用上 多核心 CPU

看板Programming作者 (點點加油)時間18年前 (2007/05/14 17:45), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串8/30 (看更多)
: 現在的 Windows , Linux OS 不是多處理機又是多工的嗎 ? 那麼多核心為甚麼 : 不能像多處理機那樣跑 ? 多工,是單核心,做得很快讓你覺得是同時在做,達到mutiprocess的效果 __A__ ___B__ __C__ ... : OS 也是用程式語言寫出來的, 現在的程式語言寫不出有多工的程式嗎 ? 多工的程式?嗯…用詞不太對 建議您可以認真的瞭解一下多工的定義 那些看似同時可做兩件事的其實都是很快的context switch 也就是multiprogramming : 那麼使用 thread lib 寫的程式不算多工 ? 同前面 多工是以kernel執行的架構來決定 若同一process下的不同thread可在不同CPU 上執行 那它可能就像是你想的thread lib做出來的 若這樣那就叫parallel了 : : 你所謂的「好幾個程式不也是可以同時下命令點選一起跑」是Win32 : : 實做Multi-processing的結果,只是多工技術的一種,你要不要先去找本書看看啊? : : 感覺你對多工還是不瞭解。 : 寫 OS 的程式語言跟寫一般程式的程式語言沒有不同吧 ? : 既然 OS 是多工的, 程式就是透過 OS 平台在其上跑的, 那多個片段程式 : 一起跑不就是多工 ? 再把多個片段程式合在一起, 讓多核心對每段同時 ^^^^^^^^^^^^^^^^^ 是! 可是這不叫「程式多工」,是OS達成「多工」 : 跑, 那不就是多核心一起跑 ? 如果說不可以, 那又差在那裡 ? 不可以 parallel的系統需要communication 也就是當你形容的多個CPU平行執行多個程式 時,它是需要溝通的,這些溝通的overhead使得parallel非常難做 也就是為什麼intel 要搞這麼久 還有 多核心(CPU)的電腦執行效率並非1+1=2 事實上1+1約等於1.2左右(有錯請鞭) 不過這個是可以克服的 也是目前努力的方向 : : 這段非常怪,Compiler也許可以回答你每個指令要花多少週期做完,但無法回答你這程式 : : 要花多少時間才能跑完,事實上,只要是圖靈機(Turing Machine,目前的機器皆是), : : 是無法回答這個問題的,因為這是所謂的Halting Problem. : 那就要問 avi 兄台這段話的意思: : " 記得看過一篇文章是說當時INTEL為了開發雙核心的技術 : 光compiler就搞了好幾年,因為當換算到machine time的時候要決定哪段code : 要讓哪個CPU跑,還要解決同步不同步問題" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.162.100.42

05/15 08:09, , 1F
不只1.2, 最佳情況下可以到1.8, 1.9以上
05/15 08:09, 1F

05/15 09:09, , 2F
不太可能只有1.2,太慢了
05/15 09:09, 2F

05/15 09:36, , 3F
1.2 差不多是 hyperthreading 的效率.
05/15 09:36, 3F

05/15 21:55, , 4F
謝謝指教 因為那是好久以前的印象了3Q
05/15 21:55, 4F
文章代碼(AID): #16IA1G6n (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 30 篇):
文章代碼(AID): #16IA1G6n (Programming)