並行編程編譯器
⑴ lammps 可以同時編譯 並行 和 單核嗎
並行技術可分為三類,分別是線程庫、消息傳遞庫和編譯器支持。線程庫(如 POSIX* 線程和 Windows* API 線程)可實現對線程的顯性控制;如果需要對線程進行精細管理,可以考慮使用這些顯性線程技術。藉助消息傳遞庫(如消息傳遞介面〔MPI〕),應用程序可同時利用多台計算機,它們彼此間不必共享同一內存空間。MPI 廣泛應用於科學計算領域。第三項技術是在編譯器中實現的線程處理支持,採用的形式自動並行化。一旦將線程處理引入到應用程序中,開發人員就可能要面對一系列新的編程缺陷(Bug)。其中許多缺陷是難以檢測到的,需要付出額外的時間和關注以確保程序的正確運行。一些比較常見的線程處理問題包括:數據爭用 ,同步,線程停頓 ,鎖 ,共享錯誤.
並行技術可以分為多進程編程和多線程編程。人們總會用某種IPC(inter-process communication,進程間通信)的形式來實現進程間同步,如管道(pipes),信號量(semaphores),信息隊列(message queues),或者共享存儲(shared memory)。在所有的這些IPC形式中,共享存儲器是最快的(除了門(doors)之外)。在處理進程間資源管理,IPC和同步時,你可以選擇 POSIX或者System V的定義。
線程技術早在20世紀60年代就被提出,但真正應用多線程到操作系統中還是在20世紀80年代中期。現在,多線程技術已經被許多操作系統所支持,包括Windows NT/2000和linux。
在1999年1月發布的Linux 2.2內核中,進程是通過系統調用fork創建的,新的進程是原來進程的子進程。需要說明的是,在Linux 2.2.x中,不存在真正意義上的線程,Linux中常用的線程Pthread實際上是通過進程來模擬的。
也就是說,Linux中的線程也是通過fork創建的,是「輕」進程。Linux 2.2預設只允許4096個進程/線程同時運行,而高端系統同時要服務上千的用戶,所以這顯然是一個問題。它一度是阻礙Linux進入企業級市場的一大因素。
2001年1月發布的Linux 2.4內核消除了這個限制,並且允許在系統運行中動態調整進程數上限。因此,進程數現在只受制於物理內存的多少。在高端伺服器上,即使只安裝了512MB內存,現在也能輕而易舉地同時支持1.6萬個進程。
在Linux 2.5內核中,已經做了很多改進線程性能的工作。在Linux 2.6中改進的線程模型仍然是由Ingo Molnar 來完成的。它基於一個1:1的線程模型(一個內核線程對應一個用戶線程),包括內核內在的對新NPTL(Native Posix Threading Library)的支持,這個新的NPTL是由Molnar和Ulrich Drepper合作開發的。
2003年12月發布的Linux 2.6內核,對進程調度經過重新編寫,去掉了以前版本中效率不高的演算法。進程標識號(PID)的數目也從3.2萬升到10億。內核內部的大改變之一就是Linux的線程框架被重寫,以使NPTL可以運行其上。
在現代操作系統里,同一時間可能有多個內核執行流在執行,因此內核其實象多進程多線程編程一樣也需要一些同步機制來同步各執行單元對共享數據的訪問。尤其是在多處理器系統上,更需要一些同步機制來同步不同處理器上的執行單元對共享的數據的訪問。在主流的Linux內核中包含了幾乎所有現代的操作系統具有的同步機制,這些同步機制包括:原子操作、信號量(semaphore)、讀寫信號量(rw_semaphore)、spinlock、BKL(Big Kernel Lock)、rwlock、brlock(只包含在2.4內核中)、RCU(只包含在2.6內核中)和seqlock(只包含在2.6內核中)。
現在的隨著現在計算機體系結構的發展,指令級的並行和線程級的並行都在日新月異地發展著.
⑵ Compac Visual Fortran 如何做並行計算
程序要實現並行其實有兩個方面,不單單是編譯器的問題,首先你還要裝並行庫,比如mpich;其次,你要把源程序改為並行程序,要加上一些並行語句如MPI_Init (&argc, &argv),必要時還應該把程序結構改為適用於並行。最後,你就可以把程序編譯為並行執行碼了,祝你好運!
給你一個vc++配置編譯並行的網址,cvf也應該差不多,windows下並行其實我沒做過,我主要在linux下做並行,
http://securelvlan.spaces.live.com/Blog/cns!C60FD6EABDDFC877!250.entry
⑶ 計算機體系結構的技術革新
計算機體系結構以圖靈機理論為基礎,屬於馮·諾依曼體系結構。本質上,圖靈機理論和馮·諾依曼體系結構是一維串列的,而多核處理器則屬於分布式離散的並行結構,需要解決二者的不匹配問題。
首先,串列的圖靈機模型和物理上分布實現的多核處理器的匹配問題。圖靈機模型意味著串列的編程模型。串列程序很難利用物理上分布實現的多個處理器核獲得性能加速.與此同時,並行編程模型並沒有獲得很好的推廣,僅僅局限在科學計算等有限的領域.研究者應該尋求合適的機制來實現串列的圖靈機模型和物理上分布實現的多核處理器的匹配問題或縮小二者之間的差距,解決「並行程序編程困難,串列程序加速小」的問題。
在支持多線程並行應用方面,未來多核處理器應該從如下兩個方向加以考慮。第一是引入新的能夠更好的能夠表示並行性的編程模型。由於新的編程模型支持編程者明確表示程序的並行性,因此可以極大的提升性能。比如Cell處理器提供不同的編程模型用於支持不同的應用。其難點在於如何有效推廣該編程模型以及如何解決兼容性的問題。第二類方向是提供更好的硬體支持以減少並行編程的復雜性。並行程序往往需要利用鎖機制實現對臨界資源的同步、互斥操作,編程者必須慎重確定加鎖的位置,因為保守的加鎖策略限制了程序的性能,而精確的加鎖策略大大增加了編程的復雜度。一些研究在此方面做了有效的探索。比如,SpeculativeLockElision機制允許在沒有沖突的情況下忽略程序執行的鎖操作,因而在降低編程復雜度的同時兼顧了並行程序執行的性能。這樣的機制使得編程者集中精力考慮程序的正確性問題,而無須過多地考慮程序的執行性能。更激進的,(TCC)機制以多個訪存操作(Transaction)為單位考慮數據一致性問題,進一步簡化了並行編程的復雜度。
主流的商業多核處理器主要針對並行應用,如何利用多核加速串列程序仍然是一個值得關注的問題。其關鍵技術在於利用軟體或硬體自動地從串新程序中派生出能夠在多核處理器上並行執行的代碼或線程。多核加速串列程序主要有三種方法,包括並行編譯器、推測多線程以及基於線程的預取機制等。在傳統並行編譯中,編譯器需要花費很大的精力來保證擬劃分線程之間不存在數據依賴關系。編譯時存在大量模糊依賴,尤其是在允許使用指針(如C程序)的情況下,編譯器不得不採用保守策略來保證程序執行的正確性。這大大限制了串列程序可以挖掘的並發程度,也決定了並行編譯器只能在狹窄范圍使用。為解決這些問題,人們提出推測多線程以及基於線程的預取機制等。然而,從這種概念提出到現在為止,這個方向的研究大部分局限於學術界,僅有個別商業化處理器應用了這種技術,並且僅僅局限於特殊的應用領域。我們認為動態優化技術和推測多線程(包括基於線程的預取機制)的結合是未來的可能發展趨勢。
馮·諾依曼體系結構的一維地址空間和多核處理器的多維訪存層次的匹配問題。本質上,馮·諾依曼體系結構採用了一維地址空間。由於不均勻的數據訪問延遲和同一數據在多個處理器核上的不同拷貝導致了數據一致性問題。該領域的研究分為兩大類:一類研究主要是引入新的訪存層次。新的訪存層次可能採用一維分布式實現方式。典型的例子是增加分布式統一編址的寄存器網路。全局統一編址的特性避免了數據一致性地考慮。同時,相比於傳統的大容量cache訪問,寄存器又能提供更快的訪問速度。TRIPS和RAW都有實現了類似得寄存器網路。另外,新的訪存層次也可以是私有的形式。比如每個處理器和都有自己私有的訪存空間。其好處是更好的劃分了數據存儲空間,已洗局部私有數據沒有必要考慮數據一致性問題。比如Cell處理器為每個SPE核設置了私有的數據緩沖區。另一類研究主要涉及研製新的cache一致性協議。其重要趨勢是放鬆正確性和性能的關系。比如推測Cache協議在數據一致性未得到確認之前就推測執行相關指令,從而減少了長遲訪存操作對流水線的影響。此外,TokenCoherence和TCC也採用了類似的思想。程序的多樣性和單一的體系結構的匹配問題。未來的應用展現出多樣性的特點。一方面,處理器的評估不僅僅局限於性能,也包括可靠性,安全性等其他指標。另一方面,即便考慮僅僅追求性能的提高,不同的應用程序也蘊含了不同層次的並行性。應用的多樣性驅使未來的處理器具有可配置、靈活的體系結構。TRIPS在這方面作了富有成效的探索,比如其處理器核和片上存儲系統均有可配置的能力,從而使得TRIPS能夠同時挖掘指令級並行性、數據級並行性及指令級並行性。
多核和Cell等新型處理結構的出現不僅是處理器架構歷史上具有里程碑式的事件,對傳統以來的計算模式和計算機體系架構也是一種顛覆
2005年,一系列具有深遠影響的計算機體系結構被曝光,有可能為未來十年的計算機體系結構奠定根本性的基礎,至少為處理器乃至整個計算機體系結構做出了象徵性指引。隨著計算密度的提高,處理器和計算機性能的衡量標准和方式在發生變化,從應用的角度講,講究移動和偏向性能兩者已經找到了最令人滿意的結合點,並且有可能引爆手持設備的急劇膨脹。盡管現在手持設備也相對普及,在計算能力、可擴展性以及能耗上,完全起到了一台手持設備應該具備的作用;另一方面,講究性能的伺服器端和桌面端,開始考慮減少電力消耗趕上節約型社會的大潮流。
Cell本身適應這種變化,同樣也是它自己創造了這種變化。因而從它開始就強調了不一樣的設計風格,除了能夠很好地進行多倍擴展外,處理器內部的SPU(SynergisticProcessorUnit協同處理單元)具有很好的擴展性,因而可以同時面對通用和專用的處理,實現處理資源的靈活重構。也就意味著,通過適當的軟體控制,Cell能應付多種類型的處理任務,同時還能夠精簡設計的復雜。
⑷ 學C語言現在最好用的編程軟體
Turbo C就可以的。編輯文本的時候可以用utraledit
至於vc++之類的我是不推薦初學者使用的
⑸ 編譯器的種類
編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平台)相同的環境下運行的目標代碼,這種編譯器又叫做「本地」編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬體平台時非常有用。「源碼到源碼編譯器」是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如: 自動並行化編譯器經常採用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。 編譯器後端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。
一般說來所有的編譯器分析,優化,變型都可以分成兩大類: 函數內(intraproceral)還是函數之間(interproceral)進行。很明顯,函數間的分析,優化更准確,但需要更長的時間來完成。
⑹ 什麼是編譯器
編譯器
編譯器是一種特殊的程序,它可以把以特定編程語言寫成的程序變為機器可以運行的機器碼。我們把一個程序寫好,這時我們利用的環境是文本編輯器。這時我程序把程序稱為源程序。在此以後程序員可以運行相應的編譯器,通過指定需要編譯的文件的名稱就可以把相應的源文件(通過一個復雜的過程)轉化為機器碼了。
[編輯]編譯器工作方法
首先編譯器進行語法分析,也就是要把那些字元串分離出來。然後進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。最後生成的是目標文件,我們也稱為obj文件。再經過鏈接器的鏈接就可以生成最後的可執行代碼了。有些時候我們需要把多個文件產生的目標文件進行鏈接,產生最後的代碼。我們把一過程稱為交叉鏈接。
一個現代編譯器的主要工作流程如下:
* 源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables)
工作原理
編譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器言)。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。
典型的編譯器輸出是由包含入口點的名字和地址以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的可執行程序。
編譯器種類
編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平台)相同的環境下運行的目標代碼,這種編譯器又叫做「本地」編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬體平台時非常有用。「源碼到源碼編譯器」是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如: 自動並行化編譯器經常採用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。
預處理器(preprocessor)
作用是通過代入預定義等程序段將源程序補充完整。
編譯器前端(frontend)
前端主要負責解析(parse)輸入的源程序,由詞法分析器和語法分析器協同工作。詞法分析器負責把源程序中的『單詞』(Token)找出來,語法分析器把這些分散的單詞按預先定義好的語法組裝成有意義的表達式,語句 ,函數等等。 例如「a = b + c;」前端詞法分析器看到的是「a, =, b , +, c;」,語法分析器按定義的語法,先把他們組裝成表達式「b + c」,再組裝成「a = b + c」的語句。 前端還負責語義(semantic checking)的檢查,例如檢測參與運算的變數是否是同一類型的,簡單的錯誤處理。最終的結果常常是一個抽象的語法樹(abstract syntax tree,或 AST),這樣後端可以在此基礎上進一步優化,處理。
編譯器後端(backend)
編譯器後端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。
一般說來所有的編譯器分析,優化,變型都可以分成兩大類: 函數內(intraproceral)還是函數之間(interproceral)進行。很明顯,函數間的分析,優化更准確,但需要更長的時間來完成。
編譯器分析(compiler analysis)的對象是前端生成並傳遞過來的中間代碼,現代的優化型編譯器(optimizing compiler)常常用好幾種層次的中間代碼來表示程序,高層的中間代碼(high level IR)接近輸入的源程序的格式,與輸入語言相關(language dependent),包含更多的全局性的信息,和源程序的結構;中層的中間代碼(middle level IR)與輸入語言無關,低層的中間代碼(Low level IR)與機器語言類似。 不同的分析,優化發生在最適合的那一層中間代碼上。
常見的編譯分析有函數調用樹(call tree),控制流程圖(Control flow graph),以及在此基礎上的變數定義-使用,使用-定義鏈(define-use/use-define or u-d/d-u chain),變數別名分析(alias analysis),指針分析(pointer analysis),數據依賴分析(data dependence analysis)等等。
上述的程序分析結果是編譯器優化(compiler optimization)和程序變形(compiler transformation)的前提條件。常見的優化和變新有:函數內嵌(inlining),無用代碼刪除(Dead code elimination),標准化循環結構(loop normalization),循環體展開(loop unrolling),循環體合並,分裂(loop fusion,loop fission),數組填充(array padding),等等。優化和變形的目的是減少代碼的長度,提高內存(memory),緩存(cache)的使用率,減少讀寫磁碟,訪問網路數據的頻率。更高級的優化甚至可以把序列化的代碼(serial code)變成並行運算,多線程的代碼(parallelized,multi-threaded code)。
機器代碼的生成是優化變型後的中間代碼轉換成機器指令的過程。現代編譯器主要採用生成匯編代碼(assembly code)的策略,而不直接生成二進制的目標代碼(binary object code)。即使在代碼生成階段,高級編譯器仍然要做很多分析,優化,變形的工作。例如如何分配寄存器(register allocatioin),如何選擇合適的機器指令(instruction selection),如何合並幾句代碼成一句等等。
⑺ CPLD和FPGA單片機是使用VHDL或verlilog HDL語言來編程的嗎
CPLD/FPGA
和
單片機是不同的。
VHDL,verilog是FPGA(或cpld)的編程語言。著兩種都是硬體編程語言,也就是對硬體進行邏輯綜合編程。
單片機是「已知硬體」,也就是說硬體都已經設計好了,需要做得是軟體編程,一般是用C或匯編。
當然,做FPGA做到復雜的時候(操作系統)也要用到C編程。
說清楚了吧^_^
⑻ 美國計算機專業
前20名
CS——Computer Science的簡稱,即計算機科學。
總的來說,計算機專業前20名的學校可分成三類:
A.4個最為優秀的CS Program:Stanford,MIT,U.C.Berkeley,CMU。
B.6個其他前10名的:UIUC,Cornell,U.Washington,Princeton,U.Wisconsin- Madison和 U.Texas-Austin。其中UIUC,Cornell,U.Washington和 U.Wisconsin-Madison幾乎從未出過前10名。
C.其他非常非常優秀的CS:CalTech,U.Maryland-College Park,UCLA,U.Michigan, GIT,Brown,Harvard,Yale,Pure和 Rice。
1. 斯坦福大學(Stanford University)
Stanford的CS是個很大個的CS,擁有40人以上的Faculty成員,其中不乏響當當、硬梆梆的圖靈獎得主(Edward A.Feigenbaum, John McCarthy)和各個學科領域的大腕人物,比如理論方面的權威Donald E. Knuth;資料庫方面的Jeffrey D. Ullman(他還寫過那本著名的編譯原理,此人出自Princeton);以及RISC技術挑頭人之一的John Hennessy。相信CS的同學對此並不陌生。該系每年畢業30多名Ph.D.以及更多的Master。學生的出路自然是如魚得水,無論學術界還是工業界,Stanford的學生都倍受青睞。幾乎所有前10 名的CS學校中都有Stanford的畢業生充當教授。
畢業於U. of Utah的Jim Clark曾經在Stanford CS當教授。後來就是這個人創辦了高性能計算機和科學計算可視化方面巨牛的SGI公司。SUN公司名字的來歷是Stanford University Network。順便提一下,創辦 YAHOO的華人楊致遠曾在斯坦福的EE攻讀博士,後來中途輟學辦了YAHOO。
CS科研方面,斯坦福在理論、資料庫、軟體、硬體、AI等領域都是實力強勁的頂級
高手。斯坦福的RISC技術後來成為SGI/MIPS的Rx000系列微處理器的核心技術;DASH,FLASH項目更是多處理器並行計算機研究的前沿;SUIF並行化編譯器成為國家資助的重點
項目,在國際學術論文中SUIF編譯器的提及似乎能為某些平庸的論文平添幾分姿色。
Stanford有學生14000多,其中研究生7000多;CS有175人攻讀博士,350人攻讀碩士。每年招收的學生數不詳,估計少不了。但不要忘了,每年申請Stanford CS的學生接近千人。申請費高達$80。
斯坦福大學位於信息世界的心臟地帶——矽谷。加州宜人的氣候,美麗的風景使得
Stanford堪稱CS的天堂。33.1平方公里的校園面積怕是夠學子們翻江倒海,叱吒風雲的
了。
2. 麻省理工學院(Massachusetts Inst. of Technology)
MIT招生好像不看GRE成績。MIT的CS是巨牛的,99年最新排名上它和斯坦福同被打了
5.0的滿分,兩者並列第一。MIT的CS曾為CS的發展作出不可磨滅的貢獻,數據流計算的
思想和數據流計算機、人工智慧方面的許多重大成就,影響了整個UNIX界的X-Window…
… MIT 和 Stanford一樣,幾乎都是在CS界樣樣巨牛的學校。據某位大俠提供的資料:
MIT的 Media Arts and Sciences知名度不在Computer Department之下。主要是多媒體技術,信息處理,人工智慧等。有一大批著名的教授,如Marvin Minsky(圖靈獎獲得者)。
3. 加州大學伯克利分校(University of California-Berkeley)
同樣地處舊金山灣畔,矽谷地帶,離Stanford大約只有50公里的UC. Berkeley是美國最激進的學校之一。60年代的嬉皮文化,反越戰,東方神秘主義,回歸自然文化都起
源於此。詩人愛倫金斯堡是當年UC. Berkeley的代言人。
在當今高科技領域UC. Berkeley在締造新的神話,在文學、數學、化學、新聞等20
多個大的學科領域位居前3名。16個諾貝爾獎得主,總數近200的科學院院士、工程院院
士,連同眾多在矽谷商戰中成為億萬富翁的伯克利人撐起了一面匯集天下英才的大旗。
INTEL總裁Andrew Grove,就是畢業於UC. Berkeley。
BSD版的UNIX影響了整個CS界,伯克利的RISC技術後來成為了SUN公司SPARC微處理器的核心技術,David Patterson接下了一個6億美元的項目用於新型計算機體系結構,特別是IRAM的研究開發。
UC. Berkeley有學生30000多,研究生超過8500人。申請費和加州大學的其他分校一樣,$40。據一項最近的調查,伯克利已經成為美國大學生最嚮往的研究生院,高居榜首,其申請的難度可想而知。
UC. Berkeley的CS是個大系,Faculty中有圖靈獎得主以及像Patterson這樣的巨牛。CS科研方面,UC. Berkeley也是樣樣強。
舊金山湛藍起伏的海灣,蒼翠綿延的山巒,舒心宜人的氣候,以及近在咫尺的矽谷
……
這一切的一切不也使得UC. Berkeley儼然一個CS學子的世外桃源嗎?
4. 卡耐基梅隆大學(Carnegie Mellon University)
CMU是個位於匹茲堡的不大的學校,學生7000多,校園好像也不大。但這個學校在工
程及其他一些領域卻是頂尖的學堂。CMU的CS不是一個系,而是一個學院,其規模之大,
可能只有Stanford,UIUC可與之相比。Mach操作系統,PVM,C.mmp等都有CMU的巨大貢獻。
申請CMU的難度很大,因為盡管CMU的CS Faculty很多,但每年只招收不足30人的研
究生隊伍。
5. 伊利諾斯大學(Univ. of Illinois-Urbana-Champaign)
UIUC的工程學院在全美是至尊級的,其CS,ECE,EE在歷史上都屢建戰功。在CS方面
,從早期的超級計算機ILLIAC I,II,III,IV到後來的CEDAR,都是CS發展史上,特別是並行計算機發展史上的重要事件,影響和引導了CS很長時期的發展。David Kuck曾是
並行計算機處理界的一代先驅。
超級計算機研究開發中心(CSRD),美國國家超級計算及應用中心(NCSA)等眾多
的機構,使得UIUC的CS常常成為研發的領頭雁。
大家可能還記得,Netscape-Navigator的最初開發人員中有個Marc Anderssen。這位來自Wisconsin 的小夥子在UIUC讀本科,大四的時候在NCSA參與編寫了MOSAIC;後來他去了矽谷,並在那裡遇到了前面提到過的Jim Clark,SGI的前創始人,兩人一見如故,聯手創辦了著名的網景Netscape,並一度在瀏覽器市場上獨霸武林。
還有Lotus Notes, 遠程登錄程序NCSA Telnet, 郵件程序Eudora等的作者,都是UIUC的畢業生。商務軟體巨人Siebel Systems的創始人Tom Siebel,也是畢業於UIUC的。
UIUC是個大學校,學生總數超過35000,研究生院近萬人。
UIUC的CS很大,40餘個Faculty提供了全面的CS教育和科研項目。每年30多個博士的
畢業數目似乎只有Stanford可以匹敵。
UIUC的Polaris並行化編譯器是這個領域能和Stanford的SUIF直接叫板的拳頭產品,清華開發並行編程環境時選用了這個系統。
UIUC在計算機硬體、軟體、AI、DB等領域都相當強大。特別是硬體,如前面提到的
ILLIAC,CEDAR等。
事實上,UIUC在超級計算機系統的研究開發方面絕不遜於MIT、Stanford等任何一個,甚至有過之而無不及。NCSA建立在UIUC這一事實本身就是佐證。UIUC CS的學生畢業後去學術界的不少,Stanford,UC. Berkeley等CS名校都有UIUC的博士挑大樑。但更多UIUC CS學人還是進入業界,成為業界實乾的中堅。
6. 康奈爾大學(Cornell University)
作為IVY LEAGUE的成員和一所私立學校,Cornell有其獨到的優勢。在美國,私立學
校一般要比公立學校難進,其學生也是經過嚴格的選拔才錄取的。Cornell的CS學生入校
後多能享受FELLOWSHIP的待遇,其個人經濟條件非公立學校可比,加上貴族式校友的提
拔,私立學校的出路是很誘人的。康奈爾在理論計算機方面一直是頂級高手,但在其他
CS領域並不總在前10名。
Cornell學生18000多,研究生過5000人。CS每年招攻讀Ph.D.的學生25人左右。
7. 華盛頓大學(University of Washington)
位於Seattle的U. of Washington得天獨厚——計算機界的巨牛MS就在西雅圖,而且更要命的是,Bill Gates就是那裡的人。這位Harvard的輟學者給了哈佛許多MONEY,但同給U. of Washington的錢財相比,實在是小巫見大巫。
U. of Washington位於風光秀麗的WASHINGTON湖畔,氣候四季如春。33000多學生中研究生有8000名左右。Seattle最令人厭惡的地方可能就是一年有160天會降水。
U. of Washington的CS較大,30多名Faculty成員,每年近20個優質博士畢業,以及大量的Master。估計每年的招生數應該不低。U. of Washington的CS在各個方面比較均衡,最強的軟體排名第5,而其他領域一般也都能位居前10,好像沒有明顯很弱的地方。
圖靈獎得主Dick Karp從UC. Berkeley告老還鄉後又被返聘到了U. of Washington的CS。U. of Washington的CS要求很高,Ph.D.學生入學的平均GPA高達3.86,GRE2160以上,加上一般較早的DEADLINE,申請U. of Washington是相當有難度的。
8. 普林斯頓大學(Princeton University)
Princeton是個令人神往的地方,這里曾經是世界的科學中心。
Princeton的CS不大,18個Faculty成員,學生人數也不算多。科研上除了排名第5的理論,似乎還沒注意到其他閃光點。但是,Princeton無疑培養出了大量計算機界的優秀人物,Jeffrey D. Ullman,John McCarthy等巨牛人物均出自大名鼎鼎的Princeton。在
Princeton領受的教育是最好的教育熏陶。
Princeton學校不大,只有6000多學生,研究生不過1700人。
9. 威斯康星大學(University of Wisconsin-Madison)
U. of Wisconsin-Madison的CS較大,35個Faculty成員,200多個研究生,每年招60—70個新生。目前幾乎1/4的Faculty來自UC. Berkeley,博士生畢業後有去Stanford ,UC. Berkeley等牛校挑大樑的,但和UIUC類似,似乎進入業界的更多一些。然而要在這里拿到博士學位可不容易。超過七成的人,會在中途找到比較理想的工作後,拿著碩士文憑拔腿就跑,免得被那些無窮無盡的科研項目給整慘了。
U. of Wisconsin-Madison的資料庫一直在前3位,經常是第1位。這里的資料庫由於在設計實現DBMS系統上的傳統優勢,使其在業界的聲譽相當崇高,據說Microsoft里有一幫Wisconsin校友從中興風作浪,Oracle也格外青睞Wisconsin-Madison的學子。
Wisconsin的硬體、計算機體系結構實力巨牛,99排名第6,對業界相當有影響力。
微處理器中的超標量技術(SuperScalar)源於此地;多處理機CACHE一致性的匯流排偵聽
SNOOPING協議,IEEE SCI協議等,都是源於此地。正在研究開發中的MultiScalar技術和 DataScalar技術據說可以把微處理器每個時鍾周期的指令發射數提到10以上,大大地提高微處理器的計算能力。Wisconsin的軟體99排名第7。主要是在系統軟體方面做OS 的設計與實現,WEB上的CACHE策略,支持共享主存和消息傳遞兩種並行編程模式及其混合的並行程序設計語言和編譯器,以及由MIDSHIP項目挑起的關於並行與分布式計算,OODB,科學資料庫,支持圖象查詢的新型查詢語言以及圖象處理等方面的研究。由於美國有大量的衛星圖象需要及時處理,加上迫切需要GIS系統的研究開發,這方面的研發使得U. of Wisconsin-Madison撈到了不少經費。
Wisconsin和UIUC的CS理論都是前10名左右。Wisconsin的Carl de Boor是逼近理論 方面的大牛。
U. of Wisconsin-Madison是個大型的綜合性學校,40000學生中研究生院的超過10 000,這萬人中有博士生5000,碩士生3500,法學院、醫學院、護理學院、獸醫學院的職業學生2000人。2200多Faculty中有多位諾貝爾獎得主,52個院士,其中18個是工程院院士。
需要注意的是,Wisconsin的CS有點不同於其他許多學校,它隸屬於College of Le
tters & Science,而不在College of Engineering下面。因此許多偏硬體的項目,比如嵌入式系統,網路硬體、路由,多媒體,通信,自控以及數字信號處理等項目不在CS D ept.,而是在工程院下的Dept. of Electrical & Computer Engineering,即ECE系。
那個系也挺大,比CS還要大不少。98年在工程類排名的計算機工程一項上排了第9位
。
10. 德克薩斯大學(University of Texas-Austin)
U. of Texas-Austin的CS較大,Faculty中好像有個圖靈獎得主。該系發展比較平衡,最好的AI排第5,其他幾個專業也多能擠進前十。
U. of Texas-Austin是個巨大的學校,5萬學生,研究生院的可能有1.3萬。但學校的主校區卻好像面積不足,僅140公頃,按美國大學的標准,太不足了。
11. 加州理工學院(California Institute of Technology)
CIT的CS很小,只有大約5位教授,每年招很少的學生。雖然申請CIT是免費的,但建
議不要輕易嘗試。由於系太小,CIT好像只是在計算機硬體和科學計算的可視化方面很強
。該系多年以來一直穩坐第11、12位幾乎沒動過窩;類似的情況還有斯坦福,MIT,穩居
第1、2位,Cornell穩居第5位,U. of Wisconsin-Madison穩居第9、10位。CIT的CS和其他系,比如數學、物理、生物等需要大量科學計算的部門聯系很緊密。CIT學校也很小, 2000名學生中研究生佔1100人。Faculty人數也不多,但幾乎個個是巨牛,按平均水平看,CIT可能是世界上最牛的學校了。
12. 馬里蘭大學(University of Maryland at College Park)
U. of Maryland at CP是一個實力相當強勁的CS,軟體第8,資料庫第4,AI第9,三個專業都擠進了前10位,它的TINY系統有相當的知名度。
13. 加州大學洛杉磯分校(University of California-Los Angeles)
歷史上UCLA的CS曾經一度輝煌,上到過第6(NRC\' 82),但近年來一直徘徊在第13 —15。而且CS的各個專業細目幾乎沒有一個能進前10名。盡管如此,UCLA的CS還是十分強大的。
UCLA輝煌的歷史可能在於它對Internet的發展所作出的巨大貢獻。六十年代美國的
ARPA在搞網路互連的開創性研究,ARPA網的四個節點是:UCLA,Stanford的SRI,UCSB和 U. of Utah。此時一位來自美國新英格蘭地區的青年Vinton Cerf不去離家咫尺的Yale大學,遠涉千里,來到了加州。他先在Stanford獲得數學學士,然後到UCLA拿下了CS的碩士和博士。
畢業後Cerf一直在SRI從事ARPA網的研究,特別是研究如何讓它無法正常工作。幾年
後,Cerf與MIT一位到業界闖盪的數學教授Kyhn合作研發,搞出了一套軟體系統用於網路
互連(1973年)。這就是TCP/IP協議的誕生。
UCLA作為INTERNET的先驅,地處陽光燦爛的南加州,應當成為CS學生的樂土。
UCLA有學生33000人,其中研究生院的佔9900人。地處洛杉磯的UCLA周圍幾乎有玩不盡的地方:如DISNEY,HOLLYWOOD等。由於位於大城市,校園不是很大,但風景異常美麗。
UCLA的CS較大,規模應該和U. of Washington和U. of Wisconsin-Madison類似。
14. 密歇根大學(University of Michigan-Ann Arbor)
U. of Michigan 是個非常了不起的學校。在BIG TEN里,從綜合的角度上說它可算
得上是領頭羊了,當然UIUC, U. of Wisconsin-Madison也緊隨其後。這里的CS偏硬的更厲害些,硬體排在第9,而計算機工程排第7,EE第5,都是前10名中的巨牛。Michigan 的CS和EE合在一起稱為EECS系,是個相當大的系,每年招收的學生應當不在少數。
Michigan的CS估計在歷史上也相當牛,U. of Wisconsin-Madison CS里兩位來自Mi chigan 的教授都是院士,在其他CS系裡,比如UIUC的,也大有Michigan 的牛人在。如 前述,UIUC的CS在硬體上極強,而Michigan 的CS中有許多UIUC的哥們在那裡當老師。
15. 喬治亞理工學院(Georgia Institute of Technology)
GIT是個較大的學校,GIT的工程學院很厲害,研發經費僅次於MIT,和UIUC,Michi
gan差不多。CS系的資料庫第7,GUI第4。
16. 布朗大學(Brown University)
Brown的規模不大。這所IVY LEAGUE中的私立學校可能擁有一些類似於CORNELL的優勢。CS的GUI可以列在第6位,好像還有許多關於語音識別等偏人工智慧方面的研發項目
。
17. 哈佛大學(Harvard University)
在CS的早期發展史上,Harvard曾經是泰斗級的人物,畢竟CS和數學,物理的淵源太
深太長了。好像王安是這里出來的,Bill Gates也是這里出來的。Harvard畢竟是Harva rd,總是名人輩出,因為Harvard總是可以招到最優秀的人。但千萬別以為哈佛人人牛。Harvard不喜歡帶工程色彩的東西,CS是掛在Arts & Science學院下面的Division of E ngineering and Applied Science,好像連獨立的一個系都不是。除了理論可以排進前 10名以外,其他項目怕也拿不出多少貨色了。
哈佛大學共有學生18000人,其中研究生院的11000人。Harvard大學擁有世界上最多的諾貝爾獎得主,150多個美國國家科學院院士。哈佛的CS估計不會是大個子,招的學生可能也不多,申請的難度應當很大。
18. 耶魯大學(Yale University)
YALE曾經也進過前10名(NRC\' 82),是YALE和UCLA而不是Princeton和U. of Texa s-Austin位於前10名的榜上。YALE的CS不大,十幾個老師加上為數不多的學生,每年只招收六個博士研究生。
和Harvard這樣很重文理的學校一樣,YALE的CS在理論上比較強。但不同於哈佛,Y
ALE有獨立的CS系,受到較高的重視。YALE CS在AI和軟體方面比較強。著名的LINDA並行編程模式就是在這里提出並實現的。YALE 的畢業生到學術界的比到業界的似乎 要多, 哈佛似乎也是這樣。
19. 普渡大學(Pure University)
可能許多人還不知道,Pure的計算機系是美國最早成立的計算機系。建系之初一
直處於TOP 10。在70年代由於本人不甚了解的原因,沒落了。Pure的排名也不太穩定
,從13到30的排法似乎都見過。Pure是個大學校,有35000學生。其工程學院很出名 20. 萊斯大學(Rice University)
Rice是個位於休斯頓的小學校,4000名學生,研究生有1600左右吧。CS也不大,優
勢在於軟體,排在第9位。該系的KENNEDY是個巨牛的人物,是美國HPCC常委的關鍵人物
之一,好像還是總統在信息科學方面的特別顧問。KENNEDY是並行計算領域的大牛。前幾
年,他義無反顧地承擔起高性能FORTRAN語言(HPF)的編譯器研製工作,項目之大,投
入人力之巨,加上他的權威地位,被人們寄予普遍厚望。可惜後來項目失敗了。從此並
行計算界陷入了一陣低潮。這幾年KENNEDY好像轉向去做針對特定處理器的後端優化技術
了。Rice CS 學生的出路相當好。
參考資料:http://www.bb268.com
⑼ C++並行技術,哪個最快Qpar, PPL, AMP, OpenMP
應該是OpenMP, 到不是它的速度多快, 而是一個開源的東西, 會被更多的人研究, 因此它的應用環境可能更容易建立起來.
⑽ 急!!!!急!!!!!!!!!急!!!!!計算機體系結構這門課所解決的問題以及解決的方法在線等
計算機體系結構(ComputerArchitecture)是程序員所看到的計算機的屬性,即概念性結構與功能特性。按照計算機系統的多級層次結構,不同級程序員所看到的計算機具有不同的屬性。一般來說,低級機器的屬性對於高層機器程序員基本是透明的,通常所說的計算機體系結構主要指機器語言級機器的系統結構。經典的關於「計算機體系結構(computerarchitecture)」的定義是1964年C.M.Amdahl在介紹IBM360系統時提出的,其具體描述為「計算機體系結構是程序員所看到的計算機的屬性,即概念性結構與功能特性」
基本概念
計算機體系結構就是指適當地組織在一起的一系列系統元素的集合,這些系統元素互相配合、相互協作,通過對信息的處理而完成預先定義的目標。通常包含的系統元素有:計算機軟體、計算機硬體、人員、資料庫、文檔和過程。其中,軟體是程序、數據結構和相關文檔的集合,用於實現所需要的邏輯方法、過程或控制;硬體是提供計算能力的電子設備和提供外部世界功能的電子機械設備(例如感測器、馬達、水泵等);人員是硬體和軟體的用戶和操作者;資料庫是通過軟體訪問的大型的、有組織的信息集合;文檔是描述系統使用方法的手冊、表格、圖形及其他描述性信息;過程是一系列步驟,它們定義了每個系統元素的特定使用方法或系統駐留的過程性語境。 計算機體系結構
8種屬性
1•機內數據表示:硬體能直接辨識和操作的數據類型和格式 計算機體系結構
2•定址方式:最小可定址單位、定址方式的種類、地址運算 3•寄存器組織:操作寄存器、變址寄存器、控制寄存器及專用寄存器的定義、數量和使用規則 4•指令系統:機器指令的操作類型、格式、指令間排序和控制機構 5•存儲系統:最小編址單位、編址方式、主存容量、最大可編址空間 6•中斷機構:中斷類型、中斷級別,以及中斷響應方式等 7•輸入輸出結構:輸入輸出的連接方式、處理機/存儲器與輸入輸出設備間的數據交換方式、數據交換過程的控制 8•信息保護:信息保護方式、硬體信息保護機制。
編輯本段發展歷程
計算機系統已經經歷了四個不同的發展階段。 計算機體系結構
第一階段
60年代中期以前,是計算機系統發展的早期時代。在這個時期通用硬體已經相當普遍,軟體卻是為每個具體應用而專門編寫的,大多數人認為軟體開發是無需預先計劃的事情。這時的軟體實際上就是規模較小的程序,程序的編寫者和使用者往往是同一個(或同一組)人。由於規模小,程序編寫起來相當容易,也沒有什麼系統化的方法,對軟體開發工作更沒有進行任何管理。這種個體化的軟體環境,使得軟體設計往往只是在人們頭腦中隱含進行的一個模糊過程,除了程序清單之外,根本沒有其他文檔資料保存下來。
第二階段
從60年代中期到70年代中期,是計算機系統發展的第二代。在這10年中計算機技術有了很大進步。多道程序、多用戶系統引入了人機交互的新概念,開創了計算機應用的新境界,使硬體和軟體的配合上了一個新的層次。實時系統能夠從多個信息源收集、分析和轉換數據,從而使得進程式控制制能以毫秒而不是分鍾來進行。在線存儲技術的進步導致了第一代資料庫管理系統的出現。計算機系統發展的第二代的一個重要特徵是出現了「軟體作坊」,廣泛使用產品軟體。但是,「軟體作坊」基本上仍然沿用早期形成的個體化軟體開發方法。隨著計算機應用的日益普及,軟體數量急劇膨脹。在程序運行時發現的錯誤必須設法改正;用戶有了新的需求時必須相應地修改程序;硬體或操作系統更新時,通常需要修改程序以適應新的環境。上述種種軟體維護工作,以令人吃驚的比例耗費資源。更嚴重的是,許多程序的個體化特性使得它們最終成為不可維護的。「軟體危機」就這樣開始出現了。1968年北大西洋公約組織的計算機科學家在聯邦德國召開國際會議,討論軟體危機課題,在這次會議上正式提出並使用了「軟體工程」這個名詞,一門新興的工程學科就此誕生了。
第三階段
計算機系統發展的第三代從20世紀70年代中期開始,並且跨越了整整10年。在這10年中計算機技術又有了很大進步。分布式系統極大地增加亍計算機系統的復雜性,區域網、廣域網、寬頻數字通信以及對「即時」數據訪問需求的增加,都對軟體開發者提出了更高的要求。但是,在這個時期軟體仍然主要在工業界和學術界應用,個人應用還很少。這個時期的主要特點是出現了微處理器,而且微處理器獲得了廣泛應用。以微處理器為核心的「智能」產品隨處可見,當然,最重要的智能產品是個人計算機。在不到10年的時間里,個人計算機已經成為大眾化的商品。 在計算機系統發展的第四代已經不再看重單台計算機和程序,人們感受到的是硬體和軟體的綜合效果。由復雜操作系統控制的強大的桌面機及區域網和廣域網,與先進的應用軟體相配合,已經成為當前的主流。計算機體系結構已迅速地從集中的主機環境轉變成分布的客戶機/伺服器(或瀏覽器/伺服器)環境。世界范圍的信息網為人們進行廣泛交流和資源的充分共享提供了條件。軟體產業在世界經濟中已經佔有舉足輕重的地位。隨著時代的前進,新的技術也不斷地涌現出來。面向對象技術已經在許多領域迅速地取代了傳統的軟體開發方法。
總結
軟體開發的「第四代技術」改變了軟體界開發計算機程序的方式。專家系統和人工智慧軟體終於從實驗室中走出來進入了實際應用,解決了大量實際問題。應用模糊邏輯的人工神經網路軟體,展現了模式識別與擬人信息處理的美好前景。虛擬現實技術與多媒體系統,使得與用戶的通信可以採用和以前完全不同的方法。遺傳演算法使我們有可能開發出駐留在大型並行生物計算機上的軟體。
編輯本段基本原理
計算機體系結構解決的是計算機系統在總體上、功能上需要解決的問題,它和計算機組成、計算機實現是不同的概念。一種體系結構可能有多種組成,一種組成也可能有多種物理實現。 計算機體系結構
計算機系統結構的邏輯實現,包括機器內部數據流和控制流的組成以及邏輯設計等。其目標是合理地把各種部件、設備組成計算機,以實現特定的系統結構,同時滿足所希望達到的性能價格比。一般而言,計算機組成研究的范圍包括:確定數據通路的寬度、確定各種操作對功能部件的共享程度、確定專用的功能部件、確定功能部件的並行度、設計緩沖和排隊策略、設計控制機構和確定採用何種可靠技術等。計算機組成的物理實現。包括處理機、主存等部件的物理結構,器件的集成度和速度,器件、模塊、插件、底板的劃分與連接,專用器件的設計,信號傳輸技術,電源、冷卻及裝配等技術以及相關的製造工藝和技術。
編輯本段分類
Flynn分類法
1966年,Michael.J.Flynn提出根據指令流、數據流的多倍性(multiplicity)特徵對計算機系統進行分類,定義如下。 •指令流:機器執行的指令序列 計算機體系結構
•數據流:由指令流調用的數據序列,包括輸入數據和中間結果 •多倍性:在系統性能瓶頸部件上同時處於同一執行階段的指令或數據的最大可能個數。 Flynn根據不同的指令流-數據流組織方式把計算機系統分為4類。 1•單指令流單數據流(,SISD) SISD其實就是傳統的順序執行的單處理器計算機,其指令部件每次只對一條指令進行解碼,並只對一個操作部件分配數據。 2•單指令流多數據流(,SIMD) SIMD以並行處理機為代表,結構如圖,並行處理機包括多個重復的處理單元PU1~PUn,由單一指令部件控制,按照同一指令流的要求為它們分配各自所需的不同的數據。 3•多指令流單數據流(,MISD) MISD的結構,它具有n個處理單元,按n條不同指令的要求對同一數據流及其中間結果進行不同的處理。一個處理單元的輸出又作為另一個處理單元的輸入。 4•多指令流多數據流(,MIMD) MIMD的結構,它是指能實現作業、任務、指令等各級全面並行的多機系統,多處理機就屬於MIMD。(2)
馮式分類法
1972年馮澤雲提出用最大並行度來對計算機體系結構進行分類。所謂最大並行度Pm是指計算機系統在單位時間內能夠處理的最大的二進制位數。設每一個時鍾周期△ti內能處理的二進制位數為Pi,則T個時鍾周期內平均並行度為Pa=(∑Pi)/T(其中i為1,2,…,T)。平均並行度取決於系統的運行程度,與應用程序無關,所以,系統在周期T內的平均利用率為μ=Pa/Pm=(∑Pi)/(T*Pm)。用最大並行度對計算機體系結構進行的分類。用平面直角坐標系中的一點表示一個計算機系統,橫坐標表示字寬(N位),即在一個字中同時處理的二進制位數;縱坐標表示位片寬度(M位),即在一個位片中能同時處理的字數,則最大並行度Pm=N*M。 由此得出四種不同的計算機結構: ①字串列、位串列(簡稱WSBS)。其中N=1,M=1。 ②字並行、位串列(簡稱WPBS)。其中N=1,M>1。 ③字串列、位並行(簡稱WSBP)。其中N>1,M=1。 ④字並行、位並行(簡稱WPBP)。其中N>1,M>1。
編輯本段技術革新
計算機體系結構以圖靈機理論為基礎,屬於馮•諾依曼體系結構。本質上,圖靈機理論和馮•諾依曼體系結構是一維串列的,而多核處理器則屬於分布式離散的並行結構,需要解決二者的不匹配問題。 首先,串列的圖靈機模型和物理上分布實現的多核處理器的匹配問題。圖靈機模型意味著串列的編程模型。串列程序很難利用物理上分布實現的多個處理器核獲得性能加速.與此同時,並行編程模型並沒有獲得很好的推廣,僅僅局限在科學計算等有限的領域.研究者應該尋求合適的機制來實現串列的圖靈機模型和物理上分布實現的多核處理器的匹配問題或縮小二者之間的差距,解決「並行程序編程困難,串列程序加速小」的問題。 計算機體系結構
在支持多線程並行應用方面,未來多核處理器應該從如下兩個方向加以考慮。第一是引入新的能夠更好的能夠表示並行性的編程模型。由於新的編程模型支持編程者明確表示程序的並行性,因此可以極大的提升性能。比如Cell處理器提供不同的編程模型用於支持不同的應用。其難點在於如何有效推廣該編程模型以及如何解決兼容性的問題。第二類方向是提供更好的硬體支持以減少並行編程的復雜性。並行程序往往需要利用鎖機制實現對臨界資源的同步、互斥操作,編程者必須慎重確定加鎖的位置,因為保守的加鎖策略限制了程序的性能,而精確的加鎖策略大大增加了編程的復雜度。一些研究在此方面做了有效的探索。比如,SpeculativeLockElision機制允許在沒有沖突的情況下忽略程序執行的鎖操作,因而在降低編程復雜度的同時兼顧了並行程序執行的性能。這樣的機制使得編程者集中精力考慮程序的正確性問題,而無須過多地考慮程序的執行性能。更激進的,(TCC)機制以多個訪存操作(Transaction)為單位考慮數據一致性問題,進一步簡化了並行編程的復雜度。 主流的商業多核處理器主要針對並行應用,如何利用多核加速串列程序仍然是一個值得關注的問題。其關鍵技術在於利用軟體或硬體自動地從串新程序中派生出能夠在多核處理器上並行執行的代碼或線程。多核加速串列程序主要有三種方法,包括並行編譯器、推測多線程以及基於線程的預取機制等。在傳統並行編譯中,編譯器需要花費很大的精力來保證擬劃分線程之間不存在數據依賴關系。編譯時存在大量模糊依賴,尤其是在允許使用指針(如C程序)的情況下,編譯器不得不採用保守策略來保證程序執行的正確性。這大大限制了串列程序可以挖掘的並發程度,也決定了並行編譯器只能在狹窄范圍使用。為解決這些問題,人們提出推測多線程以及基於線程的預取機制等。然而,從這種概念提出到現在為止,這個方向的研究大部分局限於學術界,僅有個別商業化處理器應用了這種技術,並且僅僅局限於特殊的應用領域。我們認為動態優化技術和推測多線程(包括基於線程的預取機制)的結合是未來的可能發展趨勢。 馮•諾依曼體系結構的一維地址空間和多核處理器的多維訪存層次的匹配問題。本質上,馮•諾依曼體系結構採用了一維地址空間。由於不均勻的數據訪問延遲和同一數據在多個處理器核上的不同拷貝導致了數據一致性問題。該領域的研究分為兩大類:一類研究主要是引入新的訪存層次。新的訪存層次可能採用一維分布式實現方式。典型的例子是增加分布式統一編址的寄存器網路。全局統一編址的特性避免了數據一致性地考慮。同時,相比於傳統的大容量cache訪問,寄存器又能提供更快的訪問速度。TRIPS和RAW都有實現了類似得寄存器網路。令另外,新的訪存層次也可以是私有的形式。比如每個處理器和都有自己私有的訪存空間。其好處是更好的劃分了數據存儲空間,已洗局部私有數據沒有必要考慮數據一致性問題。比如Cell處理器為每個SPE核設置了私有的數據緩沖區。另一類研究主要涉及研製新的cache一致性協議。其重要趨勢是放鬆正確性和性能的關系。比如推測Cache協議在數據一致性未得到確認之前就推測執行相關指令,從而減少了長遲訪存操作對流水線的影響。此外,TokenCoherence和TCC也採用了類似的思想。程序的多樣性和單一的體系結構的匹配問題。未來的應用展現出多樣性的特點。一方面,處理器的評估不僅僅局限於性能,也包括可靠性,安全性等其他指標。另一方面,即便考慮僅僅追求性能的提高,不同的應用程序也蘊含了不同層次的並行性。應用的多樣性驅使未來的處理器具有可配置、靈活的體系結構。TRIPS在這方面作了富有成效的探索,比如其處理器核和片上存儲系統均有可配置的能力,從而使得TRIPS能夠同時挖掘指令級並行性、數據級並行性及指令級並行性。 多核和Cell等新型處理結構的出現不僅是處理器架構歷史上具有里程碑式的事件,對傳統以來的計算模式和計算機體系架構也是一種顛覆 2005年,一系列具有深遠影響的計算機體系結構被曝光,有可能為未來十年的計算機體系結構奠定根本性的基礎,至少為處理器乃至整個計算機體系結構做出了象徵性指引。隨著計算密度的提高,處理器和計算機性能的衡量標准和方式在發生變化,從應用的角度講,講究移動和偏向性能兩者已經找到了最令人滿意的結合點,並且有可能引爆手持設備的急劇膨脹。盡管現在手持設備也相對普及,在計算能力、可擴展性以及能耗上,完全起步到一台手持設備應該具備的作用;另一方面,講究性能的伺服器端和桌面端,開始考慮減少電力消耗趕上節約型社會的大潮流。 Cell本身適應這種變化,同樣也是它自己創造了這種變化。因而從它開始就強調了不一樣的設計風格,除了能夠很好地進行多倍擴展外,處理器內部的SPU(SynergisticProcessorUnit協同處理單元)具有很好的擴展性,因而可以同時面對通用和專用的處理,實現處理資源的靈活重構。也就意味著,通過適當的軟體控制,Cell能應付多種類型的處理任務,同時還能夠精簡設計的復雜。