close

JavaTWO中這是我聽的第二個session,還不錯囉!開頭再探討摩爾定律:18月電晶體會成長一倍的時代已經結束。取而代之的是18個月核心數成長1倍,簡單來說未來機器將變成多核心的概念。嗯嗯~這是一個不錯的開頭,也是未來為何平行運算會變的如此的重要有興趣的可以繼續看下去囉!

 

多核的世界中,其實又回歸到最根本的原理。還記得在學校學的OS嗎?作業系統中有一個架構是Multiprocessor,未來機器的架構大約會是如此,而Multiprocessor引發的parallel programming會有下列的議題:Race conditiondeadlock等問題。其中,有提到一個不錯的概念,現在的多核CPU中,會有多個threadprocess執行,原本的caching之概念(也就是cachememory之間的快取),會有一個問題引發:當採用write-back的概念,會變成多個thread如果存取了想同的資料時(假設為資料x),假設x分別被載入到cache之中,此時由於在cache中的x之變動不會馬上寫回到memory之中,因此兩著thread存取相同的資料但兩者共同對x的修改卻沒有互相sync到。在實驗的結果下如果要解掉這樣的問題會比單核心程式慢12倍,所以多核真的就好嗎?嗯嗯得好好思考一下!

題外話:上述的東西哪一樣概念是新的,我覺得沒有耶,全部都是OS課堂上講到的概念跟所會面對到的議題。因此,觀念重不重要?當然重要囉;至於,哪一天會用到?我無法回答你~但在你人生的道路上,總會有一個美妙的交會點的

 

多核世代的來臨,Race condition problem’s solution is…這邊speaker介紹了兩種可能的方式,一種是用functional programming language,如果你有看過我之前一篇『資訊人未來的技術契機此一文章(額外提一下,之前我有提到的Erlang語言,在此speaker也有提及,see…未來的世界我想大家都認同平行化的世代已經來臨囉!),我想應該會對平行語言的潮流有點印象,而會場也再次證明了這件事情;其二,採用了Actor model的方式,也就是這一場的重點。

 

Actor model只要把statebehavior的包在actor之中,如此actoractor之間就不會有share memory的問題,因為所有跟memory相關存取相關的behavior都在actor中,而behavior會驅動的state更動也在actor中,故memory access is just in actor。這概念其實跟functional programming的概念可達到的效果有點類似,就是運作的過程完全不會有side effect,因此平行化的過程可以順利的運作不需去care about記憶體race condition的問題。另外,為何沒有side effect之後就很容易平行化呢,舉例來說你有三個actor,你也可以把他想成有三件事情要做,在多處理器的世界中,我們當然可以把actor丟給不同的core執行,再將結果merge處理,其實無形中這個不就是一種MapReduced的概念嗎…XD語法我就不介紹囉~

 

在雲跟端的時代,雲一定有多機、端一的有多核,我想平行運算的概念只會越來越被突顯,身為工程師或軟體設計師的我們準備好了嗎?

 

arrow
arrow
    全站熱搜

    劉逸 發表在 痞客邦 留言(0) 人氣()