Re: [問題] 有關古老程式跑在多核平台上的問題?

看板Programming作者 (ggg)時間16年前 (2009/08/03 12:50), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串5/10 (看更多)
※ 引述《lkerr (kerr)》之銘言: : 這樣就能不用更改程式卻能大大提升程式的效能. 把 cpu clock 加快, 周邊 I/O 處理加快, 才能 "完全都不更改程式" 卻能提升程式效能. 這句 "不更改" 要看如何下定義. 指令碼都不變, 但解譯執行時卻隨 使用者與設定狀況而不同, 這算不算更改? 如果原執行的效果結果都 不變, 但速度有異, 這算不算更改 ? 要加速, 顯然就是只要求結果不變. 那麼, 結果不變, 速度也變快, 但插入或修改適當的執行碼又如何 ? 所以不更改, 是指原始程式不 再找人更改修訂囉 ! 問題出在沒有原 programmer 的協助, 能否辨識或學習出程式碼 塊可以同時並行處理的區段, 然後自動調派多個實核PU來同時執行, 合併後的結果跟原來循序跑必須是一樣的, 再把這些辨識, 調派, 合 併的成本時間也都算進去, 結果是變快有賺, 那就達成目標了. intel 公司 以 預取指令 再做"錯序並行"調派, 資源衝突則遲延, 這種硬體支援算是正確的做法. Intel 似乎已把此一部份改進到 compiler 裡面, 如同 RISC 想法以精減硬體. 整件事的重點就是在做程式碼的區塊轉譯, 這個轉譯的成本先不 算在內. 這是傳統 parallel compiler 的變形, 只是處理對象是機器 碼, 結果也可能是 machine-dependent. 嚴格說應該是 Emulater 不是 VM , 利用 Emulater 協助, 是先不做 硬體, 弄對所有關鍵處才來做該做的大投資. 弄清楚該插斷攔截的片 段(這可能已經不是單一指令的事了), 清楚敏感的(sensitive)部位, VM 就可以上陣了. 假如在 VMM 之下有多個實核, 之上的 VM 是傳統的單 CPU OS 與古老 的程式. 再假設 VMM 就是要讓多個實核併行的執行多段片段程式碼 塊, 也就是用多核來模擬單核的行為特性, 使執行結果如同單核. 所以 VMM 將之上的 VM/OS/AP 預取 L 個可併行的碼塊, 饋入 M 個 cpu chip , 每個 chip 各有 N 組實核可併行處理, M*N = 1 就是老 式的單機單核逐一執行. 如果 M*N > 1 且 L >= M*N 那就是企圖用併行處理來加速老式程式的 執行, 而且不會在使用的資源上造成干擾與無效率, 這就達到不更改 原始程式與程式碼, 但執行速度因多機多核而提速. 這件事當然是電腦業的大事, 有如基因改造 ! (確實沒錯, 懂的人稍一塗鴉, 舉例為證, 就掰出論文了 !)

08/03 17:25, , 1F
完全正確, 這個正是我所需要的VMM
08/03 17:25, 1F

08/03 17:26, , 2F
可惜之前所列出的VMM都沒有這樣的功能
08/03 17:26, 2F
======= 上面的說法不是 Goldberg 的 sensitive instruction model 能敘述的. 特權指令, 敏感指令是因為這類指令的執行生效與否, 是依賴狀況而定, 不能逕自執行. 想像有一長串指令合在一起時, 都是被視為一堆 illegal instruction , 這一堆指令經由攔截解譯的機制, 被重組為幾段碼塊, 分別讓多個實核對 這幾段碼塊同時執行. 再假設這個攔截解譯的機制是 VMM 功能的一部份, 這個問題就變為原來 一堆長串循序執行的非法指令被識別出來, 並能轉換為 n 堆合法指令讓 n 個實核同時執行. 這個 n 堆合法指令如果直接讓 VMM 再執行, VMM 會將之視為合法指令不必再轉換. 此時, 如果 VMM 只能操控 m 個實核, 但 m < n , 這 n 個碼塊就被分批讓 m 及 (n-m) 個實核分批次執行. 當 m = 1 時, 長串循序執行指令都可直接對應, 被視為合法. 若 m > 1 只有 VMM 檢視轉譯過的碼塊才被視為是合法的. Parallel Compiler 就是 VMM 的預處理器, 可先做檢視, 並做大部份的 轉換, 可能有一部份的轉換才由 VMM 做最後檢視與解譯. 這是個 Block Code Extented VM , 並不是 Goldberg 的 Single Instruction VM. 假設單核/多核的相容架構可如上運作, 關鍵問題就落在長串指令對併行 碼塊間的轉換規則. ※ 編輯: ggg12345 來自: 140.115.4.12 (08/04 00:49)
文章代碼(AID): #1ATcoc-K (Programming)
討論串 (同標題文章)
完整討論串 (本文為第 5 之 10 篇):
文章代碼(AID): #1ATcoc-K (Programming)