會增加內核的計算機目前的趨勢繼續下去嗎?
是,GHz的比賽結束。在現有技術上再加快速度是不現實的。物理學已經開始了。製造芯片的技術可能會發生戲劇性的變化,這讓我們能夠繞過這一切,但這顯然不是「即將到來」。
如果我們不能擁有更快的核心,獲得更多能量的唯一途徑是擁有更多核心。
或者是否對一組內存可以提供的內核數量有一定的理論或實際限制?
絕對有一個極限。在共享內存系統中,內存是共享資源並且帶寬有限。
Max processes = (Memory Bandwidth)/(Bandwidth required per process)
現在 - 這是每個進程的帶寬「數字將緩存減少,但緩存成爲他們是否是一致的彼此,因爲每個人都訪問內存中的同一區域效率較低。 (您不能緩存存儲器寫如果另一個CPU可能需要你寫的)
當你開始談論龐大的系統,這樣的共享資源成爲主要的問題。它可能是內存帶寬,CPU週期,硬盤訪問,網絡帶寬。這涉及整個系統的結構。
你似乎真的在追求未來的願景,所以你可以做好準備。這是我的要求。
我想我們將看到軟件開發人員在他們的程序中看到並行的方式發生了變化。目前,我認爲很多軟件開發人員認爲使用多線程的唯一方法是讓他們中的很多人執行相同的操作。麻煩的是,他們都在爭奪同樣的資源。這就意味着需要引入大量的鎖定,這會導致性能問題,以及微妙的錯誤,這些錯誤會令人生氣並且耗費時間來解決。
這是不可持續的。
製造在20世紀初就開始了,建造大量汽車的最快方式並不是讓很多人在一輛車上工作,然後,當這件事完成時,將他們全部移動到下一輛車。將汽車的建造過程分解爲許多小型工作,其中一項工作的產出將成爲下一個工作的補充。他們稱之爲裝配線。在硬件設計中,它被稱爲管道鋪設,我認爲我們會看到越來越多的軟件設計轉向它,因爲它最大限度地減少了共享資源的問題。
好的 - 在一個階段的輸出和下一個輸入仍然有一個共享資源,但這只是在兩個線程/進程之間,並且更容易處理。標準方法也可以用於這些接口的製作方式,消息隊列庫似乎正在取得重大進展。
雖然沒有一個解決所有問題的方法。這種類型的管線對於可以吸收一些延遲的高吞吐量應用非常適用。如果你不能忍受延遲,你別無選擇,只能去'一個任務'的許多工作人員的路線。那些是你理想地想要扔在SIMD機器/像GPU一樣的陣列處理器的那些,但它只能真正勝過某種類型的問題。這些問題是有很多數據需要以相同的方式處理的問題,並且數據項之間的依賴關係很少或根本不存在。
掌握了流水線系統的消息隊列技術和類似知識,並通過OpenCL等庫在GPU上實現細粒度的並行處理,可以讓您深入瞭解光譜的兩端。
cpu核心不直接訪問內存。在高端至強型核心之間有三級緩存。但是可以肯定的是,內存總線帶寬往往是一個實際的瓶頸,它比* cpu慢得多,你花大價錢購買更快的總線。如果你使用網絡機器,至少還要慢一個數量級。它完全取決於你的代碼緩存將如何工作。 – 2011-12-28 17:24:37