|
最近推出的多核心架構引發了軒然大波。實際上,多處理技術已經有數十年的歷史了。例如,1960年代早期首次投入使用的CDC 6000就是一款專門設計的多處理器設備。從那時起,多處理架構開始逐漸廣泛應用於眾多領域。僅在1980年代和1990年代,就已投入了數千萬美元的經費用以研究多處理技術的需求。
% H* Y( p7 e7 ?' S3 C7 S
* b4 u* x u9 E$ Q2 _, q5 P* w" E不過,直到最近,隨著英特爾以及其他廠商相繼推出多核心晶片,多處理技術才受到大眾的關注。; E3 [- {3 p" V% u4 R
8 l+ V) e7 h( R: k5 a2 E5 S; h
現在,已很難買到不具有多核心晶片的筆記型電腦了,即使是便宜的機種也一樣。一夕之間,每個人都突然擔心起如何在多核心機器上編程了;換句話說,大家突然開始擔心起多處理技術來了。而且人們也很震驚地發現許多主流編程語言,包括C和C++都無法完全勝任這項任務。- \6 p5 I3 \+ D, X. b4 ?
7 [* k, S4 B* Z多執行緒並不是一種可在事後修補就能完事的特性。在最近一次‘GNU編譯器集’(GCC)開發論壇的討論中,關於執行緒技術最佳化並不安全的問題吸引了數百篇相關意見的發表,C語言領域的許多專業人士競相討論編譯器能否有效地進行最佳化,其方式是否會混亂了多執行緒語義。1960年代的語言,包括PL/I、 Algol 68和Simula 67,都具有可在多處理機器上處理平行執行任務的功能。0 U+ v4 }$ C' }; \2 ^
1 ?2 z: h% Q. @多處理技術發展上另一個重要角色是 Ada。甚至最初的Ada 83版語言就已具有了很成熟的多執行緒開發理念(在Ada中稱為‘任務’)了,並具備容易使用與分析的高階架構。隨後的Ada95和Ada 2005語言版本持續改善並擴展了這項功能,同時,在使用Ada來解決編寫程式(使其可高效率地執行在採用一個以上的處理器之系統)時所遇到的問題方面, Ada已累積了數十年的經驗。
- L' u# a7 C% f; U: S: h
! ^& w* N6 D& s$ F! Q% C) V關於多核心處理器領域的知識很快就會為人們所熟悉。對於現正致力於為眾多架構開發Ada編譯器系統的AdaCore公司而言,多核心系統唯一必須做的事情就是更新市場資訊。
7 H+ \# W$ `) T7 s: r0 L; B
5 G( i1 r' d$ \3 Q儘管Java也具有一些多執行緒工具,但都比較低階且容易出錯。我雖然並不完全贊同Per Brinch-Hansen在‘Java的不可靠平行機制’(Java's Insecure Parallelism)一文中詬病Java設計者在平行性部份虛擲了30年的研究和經驗,但是Java在這方面的性能著實令人失望。
0 n3 G- X p H: y" O: [. U. |+ y6 Y& a- O+ ^
Ada是否就是因應多核心晶片編程挑戰的最終答案?無人能作此斷言。但語言設計領域無疑地將有進一步的進展,而我預期Ada2015(依照慣例,標準語言約每十年修訂一次)將結合這一領域全新且重要的特性。3 m- }6 `. ^% m$ x: z5 {
* ^' p! M. ]1 j5 c, B: T; [
不過,平心而論,在立即提供可行的解決方案方面,Ada語言領先了許多競爭產品約數十年。
* {8 |: R- ~( |$ n: R/ W. O" h9 j$ R! b5 Q; U: u+ f
作者:Robert B.K. Dewar
; ?4 I4 o W: l: C2 r7 P( w! n
! Z( ]# {5 Y( K: p- U5 q1 N2 h8 Edewar@adacore.com
3 S: L# J8 z* D! b, [- q6 [# `6 y9 h' J& y" C0 d
總裁兼CEO* F8 z. t$ {0 O0 S# A. G. R) p) ~
: m% ~& _6 O9 D
AdaCore公司4 s( ^- t/ J+ `2 V5 j
5 B2 R8 B' A. k* R& |: Q" \
Source URL: http://www.eettaiwan.com/ART_880 ... .HTM?click_from=RSS |
|