5nm process 將達到現在 製程極限

fedora wrote:
以 JAVA 為例,可以把程式 threads 化,讓多筆資料同時下去跑,達到多工運算(類似平行運算)的效果。
...(恕刪)

f兄沒寫過程式吧!如果不瞭解要說的是什麼,建議就不要信口解釋......

如果本來就沒有平行性的事務的Java程式,JVM也無法幫你平行化下去跑......

一個團隊有8個人,莫非您以為「任何」專案,一定都可以很平均的分給8個人同時進行、用1個人進行的1/8時間完成?現實中的工作或是電腦要計算的真實事務,可不是算小學習題。

fedora wrote:
和資料是不是有 sequential 特性無關

以 JAVA 為例,可以把程式 threads 化,讓多筆資料同時下去跑,達到多工運算(類似平行運算)的效果。

當然單一筆資料,看不出效果,但如有成千上萬筆資料要處理的,threads 化 就可以用到 CPU 所有核心,同時去處理那些上萬筆的資料。而不是傳統的程序一筆接著一筆,只能單核心運行。


像我有時候在轉圖片製做電子書,就很奇怪為何轉圖軟體要一張圖片接著一張轉,結果CPU 使用率不到 20% 的,要等超久。如果轉圖軟體的作者把程式寫成可以多執行緒運行的,讓 CPU 全部核心都下去用,那就可以節省好幾倍的時間。...(恕刪)


不會寫程式才說這種話
三星銀河系 wrote:
不會寫程式才說這種話


他不是不會寫程式才說這種話

他應該不知道第四維度, 時間軸這個東西
在人類現實中乃不可逆, 不可跳躍, 只能依序前進吧.



最簡單的說

若某位路人甲沒有在看板上留言
就不會引來路人乙出現在看板面前
針對路人甲的留言進行回覆.
當然也不會引來其他路人觀眾加入討論.


if... do... 這種條件式可是程式裡面最基本會被發生的條件判斷呢


時間不可逆不可跳

事件因果關係有先後依存

這兩種事件都可視為一種 "絕對值"
那是怎樣都無法平行化的.


看看這一串討論的留言就好了

請問我們到這一樓共十三篇文章的發表先後與時間軸
是否可以進行平行處理?



從他的留言明顯看得出來根本沒有想過這些事情的吧.
我也想對他說.


Whistle Blow wrote:
f兄沒寫過程式吧!如果不瞭解要說的是什麼,建議就不要信口解釋......

如果本來就沒有平行性的事務的Java程式,JVM也無法幫你平行化下去跑......

一個團隊有8個人,莫非您以為「任何」專案,一定都可以很平均的分給8個人同時進行、用1個人進行的1/8時間完成?現實中的工作或是電腦要計算的真實事務,可不是算小學習題。...(恕刪)


我不是指 JVM 會幫平行化,JVM 沒有那麼神奇。

而是 JAVA 有提供 Threads 類別,直接繼承它,或者實做 Runnable 界面,就可以讓程序變成「多執行緒」(多線程)的。

藉由物件導向,把事情簡單化,不必去管它多線程底層是怎麼達成的,只須會用就好。


一個 JAVA Threads 最簡單的範例:




有兩個 JAVA 程序,分別是 Hello1 和 Hello2
Hello1 直接繼承 Threads 類別
Hello2 實做 Runnable 界面




運行結果

兩個程序是平行運行的


作業系統在一般情況下並不會限制 執行緒 (thread) 的 運行 優先順序 (priority),執行緒可能依次執行,也可能隨機選中一個thread 開始跑,或可能第一個 thread 執行到一半,換到第二個 thread,之後再跳回第一個 thread 繼續跑完。

例如上面結果,原始碼中 Thread2 明明是寫在 Thread1 下面的,但是 Thread2 卻是先被運行。

所以多執行緒還有很多問題要顧慮到,工作的完整性 (atomic) 、同步性 (synchronization) 、執行緒間資料如何共享...等等問題。

那些問題都有解決方法,當然的不會簡單。


多線程的程式,確實要顧慮到比較多問題,撰寫起來比較麻煩和操心,不過那是未來趨勢,如是走程式設計吃飯的路,早學晚學,早晚要學。

因為半導體製程已經物理碰壁,處理器往多核心發展已是必然結果。

不是未來式,而是"現在進行式"。

X86 往 雙核、4核、8、16、32核的發展,ARM 又何嘗不是。


C++ 之類的應該也有提供 Thread 類別吧,印象中 PHP 也有。
fedora wrote:
我不是指 JVM 會幫平行化,JVM 沒有那麼神奇。
而是 JAVA 有提供 Threads 類別,直接繼承它,或者實做 Runnable 界面,就可以讓程序變成「多執行緒」(多線程)的。
藉由物件導向,把事情簡單化,不必去管它多線程底層是怎麼達成的,只須會用就好。
...(恕刪)

這不用你說吧!資訊科系的學生都會........

重點是:現實中充滿了不能平行化的演算法跟工作!比如處於Linux/Windows作業系統關鍵核心系統程式中的核心地位的thread scheduler,你可以用Linux源碼為例,試著把它平行化看看......

Thread scheduler的重要性應不用解釋了,沒有它,大家的電腦都不能動了.....
Whistle Blow wrote:
重點是:現實中充滿了不能平行化的演算工作!...(恕刪)


那能否舉例幾個?願聞其詳。

我個人是認為無關。

即便需要循序處理的資料,但假如資料量很大,多線程一次就可以做好幾件,雖說單一件只能循序處理是沒錯,但上萬件一起處理,自然會比一件處理完才去處理下一件,來的快。


Whistle Blow wrote:
比如屬於作業系統核心程式中的核心程式的thread scheduler,你試著把它平行化看看......


這和現實世界有什麼關係?不明白....

一般人應該是寫軟體,不是寫作業系統的。能寫作業系統的人太牛B了。

作業系統的核心 thread scheduler 本來就是多工的啊,印象中 unix-like 和 windows NT核心 都是多工的啊,只有早期 DOS 那種的才單工。
fedora wrote:
即便需要循序處理的資料,但假如資料量很大,多線程一次就可以做好幾件,雖說單一件只能循序處理是沒錯,但上萬件一起處理,自然會比一件處理完才去處理下一件,來的快。...(恕刪)

我不就舉例了.....

fedora wrote:
作業系統的核心 thread scheduler 本來就是多工的啊.......(恕刪)

這.....我確定您沒看懂何謂thread scheduler。

Whistle Blow wrote:
我不就舉例了.......(恕刪)


就讓上面那位同學慢慢去平行處理吧. 你舉一百個例子他還是看不懂啦


人家循序處理已經跑完的東西,樓上那位同學還在讓作業系統多花資源去幫他的執行緒排程,結果連跑一個最簡單的排序動作,都要一堆執行緒在那邊互相等結果.


建議樓上那位還是好好的的念畢業比較重要,別在這邊班門弄斧

fedora wrote:
我知道你指什麼意思,你的意思是:軟體用一般寫法,作業系統就該"自動自發"把軟體變成可以平行運算的。...(恕刪)


可見還是不知道
以現實中來舉例程式能不能平行化

比如說蓋房子
你要先有組模型才能灌水泥
你不可能 組模型跟灌水泥同時進行
不過你是有可能把 模型交由好幾個工人一起處理

比如電腦開機流程
你一定會先載入 BIOS 才載入 OS
你不可能同時載入

在程式的世界
也是同樣的道理
有些工作是需要前一級的工作完成才可能繼續
至於前一級的工作就不一定能拆分平行處理

甚至也可以拿超級電腦舉例
如果程式(演算法)都可以做到完全平行處理
一張 40W 的顯卡 可以買 1W *40張 普通顯卡
但效能可能只有快上 3 倍
那超級電腦何需用什麼新的工作站繪圖卡 一張 40W 來提升效能
只要拿普通的顯卡一直並聯就好了

在工作上可以分成好幾個階段
每個階段的內容也許能平行化處理
但是每個階段都須等前一級完成才能開始
這就是為什麼我們超級電腦主要需要的是更快的處理器
而不是更多的處理器

當然一般電腦也是同樣的道理

而且過量平行化處理也不見的是好事
比如電路生產線
你可以安排每塊電路上每個元件交由 2 人焊上
也可以安排 10 個人
不過 10 個人效率就未必比 2 個人好




前面有提到 積體電路 在 15 nm 會遇到的問題
不是分子穩不穩定的問題
應該說 積體電路 不是 分子結構
是 晶格結構
也就是都是原子
為什麼要說接近物理極限 明明還有 10 個原子厚度
因為晶體電路是以 純矽存在(晶格) 矽晶格大小是 5.43Å
5nm/5.43Å 就是 10
如果再小下去 矽就不是以晶格存在
原則上不可能 很難 所以被認為 物理極限

就算突破了晶格
半導體製造目前方式可不是說 那邊有幾個原子
就真的幾個原子 還有製造上的誤差
目前製造方式可不是用機器去排原子
甚至還有各種效應問題
厚度只有 10 個原子
IC 的壽命會是多少
厚度越低 IC 的壽命是越少的
就好像 SSD 記憶體顆粒
為什麼 大家都說 25nm 壽命很低
因為 IC 在運作時 內部的效應會逐漸破壞電路
CPU 超頻 壽命會低 也是因為內部效應

所以 矽就是 5nm 極限 再往下結構就會不穩定
未來比較可是改用碳
用結構穩定的奈米碳管 極限應該是 170 pm



綜合以上我是不覺得用矽 5nm 會出現
7nm 應該就停下來了
文章分享
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 8)

今日熱門文章 網友點擊推薦!